请求:
请解释为什么CREATE TRIGGER语句抛出
SQL0206 - 未找到列或全局变量PACKED_FLD
示例代码:
CREATE TABLE TST_TABLE (
CHAR_FLD_ALIAS FOR COLUMN CHAR_FLD CHAR(9) CCSID 37 NOT NULL DEFAULT '',
PACKED_FLD_ALIAS FOR COLUMN PACKED_FLD DECIMAL(9, 0) NOT NULL DEFAULT 0,
ZONED_FLD_ALIAS FOR COLUMN ZONED_FLD NUMERIC(9, 0) NOT NULL DEFAULT 0 ,
DATE_FLD_ALIAS FOR COLUMN DATE_FLD DATE NOT NULL DEFAULT CURRENT_DATE,
TIME_FLD_ALIAS FOR COLUMN TIME_FLD TIME NOT NULL DEFAULT CURRENT_TIME,
TSTAMP_FLD_ALIAS FOR COLUMN TSTAMP_FLD TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY( CHAR_FLD_ALIAS ) )
CREATE TRIGGER TST_TRGPGM_LONG_NAME
NO CASCADE
BEFORE INSERT ON TST_TABLE
REFERENCING OLD AS o NEW AS n
FOR EACH ROW MODE DB2ROW
PROGRAM NAME TST_TRGPGM
BEGIN
SET n.PACKED_FLD = 999;
END
完成错误消息:
消息ID。 。 。 。 。 。 :SQL0206 严重程度。 。 。 。 。 。 。 :30 消息类型。 。 。 。 。 :诊断
消息。 。 。 。 :找不到列或全局变量PACKED_FLD 原因。 。 。 。 。 :找不到PACKED_FLD作为表* N的列 在* N中,未在* N中找到全局变量。如果表是 * N,PACKED_FLD不是可以引用的任何表或视图的列。
恢复。 。 。 :执行以下操作之一并再次尝试请求:
- 确保在语句中正确指定了列名和表名 - 如果这是SELECT语句,请确保在FROM子句中指定了所有必需的表 - 如果要将列作为相关参考,请使用正确的表格标识符对列进行限定 - 如果该列旨在成为全局变量,则使用全局变量所在的模式限定名称,或者确保模式位于路径中。
参考网站:
答案 0 :(得分:3)
请尝试"长名"而不是"短名称",就我可以重新调用而言,它引用了SYSCOLUMNS表中的长名称(COLUMN_NAME)。
此致 罗兰