在 DB2 中使用 MERGE 命令时出错
Posted
技术标签:
【中文标题】在 DB2 中使用 MERGE 命令时出错【英文标题】:Error when using the MERGE command in DB2 【发布时间】: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
表中更新多条记录,并在不存在记录的地方导入。
我做错了什么?
【问题讨论】:
定义了什么类型的触发器?查看合并规则ibm.com/support/knowledgecenter/SSEPGG_11.1.0/… 【参考方案1】:感谢您的帮助。似乎问题在于它试图合并同一记录两次。我的截断表已被注释掉。
【讨论】:
以上是关于在 DB2 中使用 MERGE 命令时出错的主要内容,如果未能解决你的问题,请参考以下文章