2013-11-24 49 views
0

如何,我可以爲屬性設置默認值是一個squeuence的下一個值設置爲默認值DB2-下一個序列值

我試過如下:

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

這導致語法錯誤

請問您可以請教,這是可行的,如果是的話什麼是正確的語法?

在此先感謝。

回答

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 
+0

由於Emmad對於UR響應:) – User

+0

我試圖使一個標識,但我可以定義同一性爲在表中未改變的創建屬性表,所以這就是爲什麼我切換到使用序列 – User

+0

是否有任何解決方案將屬性的值設置爲下一個序列值? 在此先感謝:) – User