我想通过dblink连接远程数据库,然后把本地的数据用merge语句推送到远程库中
MERGE INTO test@ly_dblink A
using(SELECT ID, age, NAME FROM test) T
ON(T.id=A.id)
WHEN NOT MATCHED THEN
INSERT
(ID, age, NAME)
VALUES
(T.id, T.age, T.name)
WHEN MATCHED THEN
UPDATE
SET ID = T.id,
age = T.age,
NAME = T.NAME;
上面语句执行后会报ORA-38104,ORA-02063错误
ORA-38104:Columns referenced in the ON Clause cannot be updated:"A1"."ID"
ORA-02063:紧接着line(起自ly_dblink ) 。
dblink没有问题,把test@ly_dblink的别名去掉后,条件用test@ly_dblink.id=t.id,会报DATABASE LINK:ly_dblink.id不存在。
------解决方案--------------------
把倒数第三行去掉,错误提示就是告诉你,你是依据ID相等来更新的,id本身就不能被更新,也没必要更新啊