【问题标题】:Error when using the MERGE command in DB2在 DB2 中使用 MERGE 命令时出错
【发布时间】:2019-04-30 13:09:41
【问题描述】:

我正在尝试使用 DB2 v11 中的MERGE 命令更新或插入数据到表中。但是我不断收到错误:

SQL0723N 触发器“TRACE_AFTE”中的触发 SQL 语句发生错误。
针对错误返回的信息包括 SQLCODE “-746”、SQLSTATE “57053”和消息标记 “CUSTOM_AFTER_UPDAT|SP_CUSTOM_AFTER_U”。 SQLSTATE=09000"

我查看了错误,它说例程与表的使用冲突..表已在使用中。

我尝试将查询更改为基于 VALUES 而不是表进行更新,但在意外令牌上出现错误

SQL0104N 在“MATCHED 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 表中更新多条记录,并在不存在记录的地方导入。

我做错了什么?

【问题讨论】:

标签: sql db2 db2-luw


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 2018-12-11
    • 2012-07-03
    • 1970-01-01
    • 2016-01-02
    • 2019-01-12
    相关资源
    最近更新 更多