【发布时间】:2009-12-04 06:45:49
【问题描述】:
我已经创建了一个这样的表:
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))
错误 2009 年 12 月 4 日 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())))
错误 2009 年 12 月 4 日 6:11:11 AM 0:00:00.234 DB2 数据库错误: 错误 [42884] [IBM][DB2/AIX64] SQL0440N 没有命名的授权例程 “功能”类型的“SCOPE_IDENTITY” 找到了兼容的参数。 SQLSTATE=42884 1 0
【问题讨论】:
-
@Michael:如果您发布 SQL(或其他)代码,请突出显示您的代码行,然后按编辑器工具栏上的“代码”按钮 (010 101) 以启用漂亮的格式和语法突出显示- 谢谢!