db2-使用下一个序列值设置默认值

时间:2013-11-24 15:52:26

标签: db2

如何将属性的默认值设置为squeuence的下一个值

我尝试了以下内容:

ALTER TABLE Person ADD COLUMN ccn VARCHAR(254) default (next value for KAP.CCN_SEQ );

这会导致语法错误

请问建议这是可行的,如果是,那么正确的语法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您的列的类型为Varchar - 我认为这对于序列号来说有点不寻常。您还需要确定是要创建标识还是序列。对于两者之间的差异以及如何创建每个参见:ID vs Sequence in DB2。需要注意的一些要点是(引用参考文献): 标识列具有以下特征:

•只有在创建表时,才能将标识列定义为表的一部分。创建表后,您无法更改它以添加标识列。 (但是,可能会更改现有的标识列特征。)

•标识列自动为单个表生成值。

•当标识列定义为GENERATED ALWAYS时,使用的值始终由数据库管理器生成。在修改表的内容期间,不允许应用程序提供自己的值。

序列对象具有以下特征:

•序列对象是一个未绑定到任何一个表的数据库对象。

•序列对象生成可在任何SQL语句中使用的顺序值。

由于任何应用程序都可以使用序列对象,因此有两个表达式用于控制指定序列中下一个值的检索以及在执行语句之前生成的值。 PREVVAL表达式返回当前会话中先前语句的指定序列的最近生成的值。 NEXTVAL表达式返回指定序列的下一个值。使用这些表达式允许在几个表中的几个SQL语句中使用相同的值。

创建序列(示例):

CREATE SEQUENCE ccn
      START WITH 1
      INCREMENT BY 1
      NOMAXVALUE
      NOCYCLE
      CACHE 24