Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
 要关上

选项,可以在选项字母前后加上减号(-c-),或者在前面加上加号(+)。再解释一下前两句话,因为这可能有点儿混乱:在标志前面 放上减号会打开 选项;在标志前面 和后面 都放上减号,或者在标志前面放上加号 会关上

选项。不,这么说还是不太明确(嗨,我没有写出代码)。因为这可能导致混淆,我们用自动提交选项举个例子。

  一些命令行选项是默认打开的,其他的是默认关上

的。前面的解释(和后面的示例)描述默认打开的命令行选项的行为和效果。如果命令行选项是默认关上

的,那么运用

相反的逻辑。

  在默认情况下,自动提交特征

是打开的(-c)。这个选项指定每个语句能不能

自动提交或回滚。

  如果一个语句成功了,它就和它前面执行的关上

了自动提交(+c 或 -c-)的所有成功语句一起提交。但是,如果它失败了,它就和它前面执行的关上

了自动提交的所有成功语句一起回滚。如果这个语句关上

了自动提交,就必须显式地执行提交或回滚命令。

  在下图中,在命令行上修改了自动提交特征

的值来演示这个流程

  在运行时修改命令行选项

  

  那么,发生了什么情况?首先,我建立

了一个称为 A 的表,但是在执行这个任务时运用

+c 选项关上

了默认的自动提交选项。(也可以在这个标志前后加上减号[-c-],效果是一样的。)在建立

表 A 之后(请记得

,没有提交这个操作),我建立

了另一个称为 B 的表,这一次也关上

了自动提交特征

。然后对这两个表执行

Cartesian 联结,同样动态地关上

DB2 CLP 的自动提交特征

。最后,做一次回滚并再次运行同样的 SELECT 语句,这一次这个语句失败了。

  如果您看看这个事务,就会发觉

我没有执行提交操作。如果第一个 SELECT 没有包含 +c 选项,那么就会提交建立

表 A 和 B 的结果(因为这个 SELECT 成功了);因此后面的回滚不会影响这两个已经提交的表,第二个 SELECT 语句会成功地返回与第一个 SELECT 语句相同的结果。

  试一下相同的命令序列,但是这一次运用

-c- 选项。应该会看到同样的结果。在此之后,再试一次,这一次在第一个 SELECT 语句中不运用

任何选项,看看第二个 SELECT 能不能

会返回结果。

  您的操作系统可能对在一个语句中可以读取的最大字符数量有限定

(即使命令行在显示器上转入下一行)。为了在输入长语句时处理

这个限定

,可以运用

续行字符()。当 DB2 遇到续行字符时,它读取下一行并在处理时将两行合并。在两种 DB2 处理程序中都可以运用

这个字符;但是,要知道 DB2 对一个语句的限定

是 2 MB(这对于命令行应该足够了)。下图演示了它在 DB2 CLP 中的运用

要领


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理