[英]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.