【问题标题】:DB2 MERGE does not INSERTwhen NOT MATCHEDDB2 MERGE 不匹配时不插入
【发布时间】:2017-05-12 01:58:49
【问题描述】:

我的声明:

MERGE INTO tblshoppingcart AS target USING 
(SELECT * FROM tblshoppingcart 
WHERE session_id = 'f7f2eb03-5ca5-4a85-b83e-70f197c087ae ' AND primlink = '19830625000054' AND store = 17 AND catalog = 'SS3' AND quantity = 35 AND item_type = 0) AS source 
ON target.primlink = source.primlink AND 
target.session_id = source.session_id AND target.item_type = source.item_type 
        WHEN NOT MATCHED THEN 
        INSERT VALUES ( 'f7f2eb03-5ca5-4a85-b83e-70f197c087ae', '19830625000054', 17, 'SS3', 'PAS', 35, 5, '', 0 ) 
WHEN MATCHED THEN 
UPDATE SET quantity = 15

当匹配时,更新工作正常

当 NOT MATCHED 时,INSERT 不会抛出错误,但也不会插入任何内容。

【问题讨论】:

    标签: sql merge db2


    【解决方案1】:

    尝试将 WHEN NOT MATCHED THEN 更改为:

    WHEN NOT MATCHED BY TARGET THEN
    

    【讨论】:

    • TARGET 是 SQL 关键字,您可能希望将别名目标更改为 T 或与关键字不冲突的内容。
    • 谢谢,我发现问题在于我传递了硬编码的值,但是当我使用源/目标名称时它起作用了!
    【解决方案2】:

    感谢您的回复,我发现问题在于我传递了硬编码的值,但是当我使用源/目标名称时它起作用了。

    所以不是INSERT VALUES ( 'f7f2eb03-5ca5-4a85-b83e-70f197c087ae'

    我愿意INSERT VALUES ( target.session

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多