DB2大型机版本12。
我们有一个不同应用程序插入的表。这些应用程序都有field1值,但可能没有field2。可以使用field1从另一个现有表中检索field2。因此,为了从现有表中更新field2,我们尝试了以下触发器:
CREATE TRIGGER GENTRIGG
NO CASCADE BEFORE INSERT ON Table1
REFERENCING NEW AS NNN
FOR EACH ROW
BEGIN
SELECT Table2.field2 INTO NNN.field2 FROM
Table2
WHERE Table2.field1 = NNN.field1
FETCH First 1 rows only;
END
也尝试过
CREATE TRIGGER GENTRIGG
NO CASCADE BEFORE INSERT ON Table1
REFERENCING NEW AS NNN
FOR EACH ROW
BEGIN
SELECT Table2.field2 INTO NNN.field2 FROM
Table2
WHERE Table2.field1 = NNN.field1 AND
Table2.field3 = ‘0’;
END
其中field3 = 0将仅返回一行。
也尝试了带ATOMIC的MODE DB2SQL。但所有这些都失败了,原因如下:
DSNT408I数据库代码= -104,错误:非法符号""。一些
可能合法的符号有:年月日年月日小时减
或者类似的东西。
短暂性脑缺血发作
期望触发器创建工作,但它没有。继续得到-104
1条答案
按热度按时间tzdcorbm1#
你的意思是这样的:
如果子查询也返回null,您应该考虑使它更具防御性。
要执行上述操作,需要正确配置用于将SQL提交到数据库的工具,以便在块的末尾(触发器的
END
之后)使用替代分隔符。