为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:
【CPU】:
【问题描述】*:
总共2个语句正依次执行...
[执行语句1]:
MERGE
INTO
max44."privrelation" AS target
USING (SELECT '2108', 'depend', '1651') AS source ("priv", "type", "relationPriv")
ON (target."priv" = '2108'
AND target."type" = 'depend'
AND target."relationPriv" = '1651')
WHEN MATCHED THEN
UPDATE SET "priv" = '2108', "type" = 'depend' ,"relationPriv" = '1651' WHEN NOT MATCHED THEN
INSERT ("priv", "type", "relationPriv") VALUES ('2108', 'depend', '1651');
执行失败(语句1)
-4064: 第10 行附近出现错误:
不能更新关联条件中的列
1条语句执行失败
"priv", "type", "relationPriv" 是唯一约束 这张表里面一共就这三个字段没有其他字段了
因为更新时会根据on字段进行匹配,如果事务在更新的同时,匹配列也被修改,该事物就无法在源表中获取一行稳定的数据。
建议新增一个字段,将 "priv","type","relationPriv"三列合并作为主键ID, 以主键ID进行on条件的匹配。