我正在尝试使用DB2 v11中的MERGE
命令将数据更新或插入到表中。但是我不断收到错误:
SQL0723N触发器“ TRACE_AFTE”中的已触发SQL语句中发生错误。
返回的错误信息包括SQLCODE“ -746”,SQLSTATE“ 57053”和消息令牌 “ CUSTOM_AFTER_UPDAT | SP_CUSTOM_AFTER_U”。 SQLSTATE = 09000“
我检查了错误,并说例程与表的使用冲突。表已在使用中。
我尝试将查询更改为根据VALUES
而不是表进行更新,但是在意外令牌上出现错误
SQL0104N在“ MATHEND THEN”之后发现了意外的标记“ INSERT”。 预期的令牌可能包括:“”。 SQLSTATE = 42601 “
MERGE INTO TRACE target
USING IMPORT_RAW source
ON target.DETAIL_NUMBER = source.DETAIL_LINE_ID
AND target.DESC = source.TRACE_TYPE
WHEN MATCHED THEN
UPDATE SET NUMBER = source.PRO
使用VALUES
MERGE TRACE AS T
USING IMPORT_RAW AS S
ON (T.DETAIL_NUMBER= S.DETAIL_LINE_ID) AND T.DESC = S.TRACE_TYPE
WHEN NOT MATCHED BY TARGET
THEN INSERT(DETAIL_NUMBER, TRACE_NUMBER) VALUES(S.DETAIL_LINE_ID, S.CARRIER_PRO)
WHEN MATCHED
THEN UPDATE SET T.NUMBER= S.PRO;
该查询应更新记录所在的Import_raw
表中的多个记录,并从不存在的表中导入。
我在做什么错了?
答案 0 :(得分:0)
感谢您的帮助。似乎问题在于它试图将同一记录合并两次。我的截断表已被注释掉。