无法合并db2中的Clob

时间:2019-02-01 20:01:51

标签: db2 clob

我在执行DB2 (Version 11)中的merge语句时遇到问题。如果我省略了“ WHEN MATCHED”子句,或者如果“ WHEN MATCHED”子句更新了timestamp列,则该语句可以正常工作。还有,当我更新CLOB的问题。

声明:

MERGE into myTable as tab
USING (VALUES (123, '<test>data</test>', CURRENT TIMESTAMP)) as src(id, xml, tstmp)
ON tab.ID = src.id
  WHEN MATCHED THEN UPDATE
      SET tab.XML = src.xml
  WHEN NOT MATCHED THEN 
      INSERT (ID, XML, CREATED_TIMESTAMP) VALUES (src.id, src.xml, src.tstmp);

错误:

  

[产品编号:-907,SQL状态:27000]已尝试通过约束或触发 “AFTER_UPDATE_myTable” 来修改所述目标表中, “为myTable”,MERGE语句的.. SQLCODE = -907,SQLSTATE = 27000, DRIVER = 29年4月22日

我应该注意,我知道myTable中只有一个条目,其中ID = 123。

谢谢

1 个答案:

答案 0 :(得分:1)

SQL0907N

  

SQL0907N

     

试图通过约束或触发器 name 修改MERGE语句的目标表 table-name

     

说明

     

MERGE语句导致约束或触发器名称被激活,试图更新,插入表表名或从表中删除   也是目标表或同一表层次结构中的表,   MERGE语句。这是不允许的。

     

用户回复

     

更改MERGE语句以删除导致约束或触发器激活的操作,或更改具有以下内容的表:   约束或触发器以删除对目标表的引用。

您可能在此表上具有更新后触发器L.Map,该触发器将更改同一表中的数据。修改它,例如,如果可能的话,在更新列var mymap; popup.on('open', function(){ mymap = L.map( /* etc */ ); }); popup.on('close', function(){ mymap.remove(); }); 时不激活它。