我在执行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。
谢谢
答案 0 :(得分:1)
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();
});
时不激活它。