我创建了一个这样的表:
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没有命名的授权例程 “FUNCTION”类型的“SCOPE_IDENTITY” 找到了兼容的参数。 SQLSTATE = 42884 1 0
答案 0 :(得分:0)
另一个论坛回答了这样的问题:
INSERT INTO A (ID_MIRROR) VALUES ( 'PRE' || IDENTITY_VAL_LOCAL());
答案 1 :(得分:0)
如果您可以在SELECT语句中随时根据需要简单地创建此列,为什么还需要执行此操作?