在DB2中使用MERGE命令时出错

时间:2019-04-30 13:09:42

标签: sql db2 db2-luw

我正在尝试使用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表中的多个记录,并从不存在的表中导入。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。似乎问题在于它试图将同一记录合并两次。我的截断表已被注释掉。