dblink无法远程提交,我只能勉强提出一个方案供参考。
首先数据库AB间互相建立dblink;也就是两个dblink(A到B,B到A)
另外A数据库连接B数据库,所用的B数据库的用户是一个特殊的用户,除了这个dblink以外,其他的地方根本用不到的。
B到A的触发器则只需要读取权限就可以了。
在数据库A上建立触发器,after insert后触发,触发的内容是利用dblink登陆B数据库,登陆后随便查询个什么,都可以然后退出登陆。(直接退出也可以,主要是怕数据库记录不到登陆,登陆触发器有时似乎不那么好用,如果实在不好用可以在这个特殊用户 建立一张表,然后每次登陆都drop这张表,用drop触发器,这个没问题)
B数据库建立一个登陆触发器(或drop触发器),只要那个特殊用户登陆,那么就启动,就是查询A数据库的表a,然后更新表b,然后提交。如果是drop或create触发器,别忘了再重新create和drop,不然表会越来越多或者无表drop。
sql 两个数据库之间怎么更新数据--<a href="https://www.baidu.com/s?wd=%E8%A7%A6%E5%8F%91%E5%99%A8&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3nHNhnj6YuWmLmvFWnWc10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHT1PWfkrHfznHTzP1T4P1czPs" target="_blank" class="baidu-highlight">触发器</a>可以,通过数据库2中的表B更新数据库1中的表A。
create trigger tgr_update
on 数据库2.dbo.B
for update
as
begin
update 数据库1.dbo.A set 数据库1.dbo.A.字段='值' from inserted where 数据库1.dbo.A.字段=inserted.字段
end
这两个数据库在一个服务器上么?如果在,且在数据库B中 *** 作就直接update 表1
set 表1.列名=A.表1.列名
where 表1.唯一标识符=A.表1.唯一标识符
如果两个数据库不在同一个服务器上,那么就要通过建立服务器之间的链接。语法同上面的类似,在A的前面加上服务器的IP地址即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)