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

db2—使用下一个序列值设置默认值,db2,Db2,如何将属性的默认值设置为squence的下一个值 我尝试了以下方法: ALTER TABLE Person ADD COLUMN ccn VARCHAR(254) default (next value for KAP.CCN_SEQ ); 这会导致语法错误 你能告诉我这可行吗?如果可行,正确的语法是什么 提前感谢。您的列是Varchar类型-我想这对于序列号来说有点不寻常。您还需要确定是要创建标识还是序列。有关两者之间的差异以及如何创建它们,请参见:。需要注意的几点是(引用自参考文献): 标

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

我尝试了以下方法:

ALTER TABLE Person ADD COLUMN ccn VARCHAR(254) default (next value for KAP.CCN_SEQ );
这会导致语法错误

你能告诉我这可行吗?如果可行,正确的语法是什么


提前感谢。

您的列是Varchar类型-我想这对于序列号来说有点不寻常。您还需要确定是要创建标识还是序列。有关两者之间的差异以及如何创建它们,请参见:。需要注意的几点是(引用自参考文献): 标识列具有以下特征:

•只有在创建表时,才能将标识列定义为表的一部分。一旦创建了一个表,就不能将其更改为添加标识列。(但是,现有的标识列特征可能会改变。)

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

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

序列对象具有以下特征:

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

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

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

要创建序列(示例):


感谢Emmad的回复:)我尝试创建一个标识,但我可以在创建表时定义属性的标识,而不改变表,这就是为什么我切换到使用序列。是否有任何解决方案将属性的值设置为下一个序列值?提前感谢:)如果创建新表并复制数据,则可以使用identity。这(可能)很简单。如果创建序列并执行以下操作,则可以使用序列值:插入到person(PersonKey,otherdata)值(ccn的下一个值,1000);到目前为止,我还没有DB2的访问权限,请尝试让我知道。非常感谢Emmad:)我创建了一个过程:)
CREATE SEQUENCE ccn
      START WITH 1
      INCREMENT BY 1
      NOMAXVALUE
      NOCYCLE
      CACHE 24