【发布时间】:2016-08-30 18:20:13
【问题描述】:
我必须创建将在tableB 中更新数据但从
tableA 来自其他数据库(我正在使用 db-link)。我的想法是将tableA数据加载到光标cursor cur,创建简单的循环:
for tmp in cur loop
if tmp.name != (select name from tableB where tableB_ID = tmp.tableA_ID) then
update tableB set name = tmp.name where tableB_ID = tmp.tableA_ID;
end if;
end loop;
并检查两个表中的每一行和每一列以寻找差异。
这是我的问题的简单表示,因为我可以有大约 25 个不同的列,可能需要更新大约 1000 行。也许更好的解决方案是保存一行的所有差异并创建一个包含许多set 的更新语句?
我有点困惑如何有效地做到这一点。创建许多简单的更新(我可能需要执行最多 25 次更新)或只创建一个复杂的更新。最后我会补充一点,我没有关于必须更新多少行的信息。也许有人有更有效的想法。
感谢您的帮助!
【问题讨论】:
-
您能具体说明您使用的是哪些数据库吗? (SQL Server、Oracle 等)
-
这是一个很大的话题,但如果您想将更改从一个实例同步到另一个实例(并且知道如何推出自己的解决方案),您将需要使用集合操作 ( select * from tab 减去 select * from tab@somelink)。另外,不要使用更新,只需删除后插入即可。
-
@Av4t4r 两个数据库都是 Oracle。 .
标签: oracle