簡體   English   中英

如何在同一插入中的不同列中使用標識列的值

[英]how to use the value of an Identity column for a diffent column in the same insert

我創建了一個這樣的表:

CREATE TABLE A
( ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (
START WITH +1
INCREMENT BY +1
NO MINVALUE
NO MAXVALUE
NO CYCLE
CACHE 20
NO ORDER )
, ID_MIRROR CHAR(20))

我想做一個插入操作,這樣ID將被自動設置,而ID_MIRROR將是ID中的內容,但前綴為'PRE'。

我嘗試以下操作失敗:

INSERT INTO A (ID_MIRROR) 
VALUES ( 'PRE' || CHAR(A.ID))

錯誤12/4/2009 6:43:08 AM 0:00:00.296 DB2數據庫錯誤:錯誤[42703] [IBM] [DB2 / AIX64] SQL0206N“ A.ID”在使用它的上下文中無效。 SQLSTATE = 42703 1 0

insert into A (id_mirror)
VALUES (CONCAT('PRE', CHAR(identity_val_local())))

ID_MIRROR為NULL,后續插入是ID的先前值。

insert into A (id_mirror)
VALUES (CONCAT('PRE', CHAR(scope_identity())))

錯誤12/4/2009 6:11:11 AM 0:00:00.234 DB2數據庫錯誤:錯誤[42884] [IBM] [DB2 / AIX64] SQL0440N沒有名為“ SCOPE_IDENTITY”的具有兼容參數的類型為“ FUNCTION”的授權例程找到了。 SQLSTATE = 42884 1 0

另一個論壇回答了這樣的問題:

INSERT INTO A (ID_MIRROR) VALUES ( 'PRE' || IDENTITY_VAL_LOCAL());

當您可以隨時在SELECT語句中臨時隨意創建此列時,為什么還要這樣做呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM