请教个数据推送的问题

BaseDT 2014-05-08 04:18:08
我想通过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不存在。
...全文
251 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
BaseDT 2014-05-09
  • 打赏
  • 举报
回复
引用 7 楼 lzy498920086 的回复:
是跨库查询?
是把本库的数据推送到远程库
Jerry_Li-CN 2014-05-09
  • 打赏
  • 举报
回复
是跨库查询?
BaseDT 2014-05-09
  • 打赏
  • 举报
回复
引用 5 楼 babyqian84 的回复:
[quote=引用 4 楼 gleiyu 的回复:] [quote=引用 3 楼 babyqian84 的回复:] 把倒数第三行去掉,错误提示就是告诉你,你是依据ID相等来更新的,id本身就不能被更新,也没必要更新啊
这个是我在本机测试的语句,忘记把id注释掉了,注释过后可以运行。 但是另一个库里的merge语句没这个问题,报的是not all variables bound错误。[/quote] 你说的本机和另一个库是什么意思?一共有几个数据库?还是只是运行地方不同。我按照你的SQL试了下都是OK的。 语法貌似没什么问题,还是查查ORA错误分析吧。 另外建议尽量避免使用关键字作为栏位名称。[/quote] 就是生产库,不同的运行地方。
babyqian84 2014-05-09
  • 打赏
  • 举报
回复
引用 4 楼 gleiyu 的回复:
[quote=引用 3 楼 babyqian84 的回复:] 把倒数第三行去掉,错误提示就是告诉你,你是依据ID相等来更新的,id本身就不能被更新,也没必要更新啊
这个是我在本机测试的语句,忘记把id注释掉了,注释过后可以运行。 但是另一个库里的merge语句没这个问题,报的是not all variables bound错误。[/quote] 你说的本机和另一个库是什么意思?一共有几个数据库?还是只是运行地方不同。我按照你的SQL试了下都是OK的。 语法貌似没什么问题,还是查查ORA错误分析吧。 另外建议尽量避免使用关键字作为栏位名称。
BaseDT 2014-05-09
  • 打赏
  • 举报
回复
引用 3 楼 babyqian84 的回复:
把倒数第三行去掉,错误提示就是告诉你,你是依据ID相等来更新的,id本身就不能被更新,也没必要更新啊
这个是我在本机测试的语句,忘记把id注释掉了,注释过后可以运行。 但是另一个库里的merge语句没这个问题,报的是not all variables bound错误。
babyqian84 2014-05-09
  • 打赏
  • 举报
回复
把倒数第三行去掉,错误提示就是告诉你,你是依据ID相等来更新的,id本身就不能被更新,也没必要更新啊
BaseDT 2014-05-09
  • 打赏
  • 举报
回复
再顶一下,求高手解答,在线等……
BaseDT 2014-05-08
  • 打赏
  • 举报
回复
把远程表换成本地表使用merge就没问题

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧