如何根据一个数据库中的表更新两一个数据库对应的表? 在线等 ...
两个数据库中有多个表结构完全相同,先需要通过数据库B更新数据库A中同名的表,
请问有没有简单的方法?要求:
1、更新语句最好除了主键字段外不涉及其他具体字段名
2、由于数据库A中的表存在外键,所以不能直接删除以免删除掉外键关联表的信息
请问有没有好方法?
问题点数:100、回复次数:7Top
1 楼pbsql(风云)回复于 2005-03-04 12:00:32 得分 10
类似这样:
update a..table1 set col=b..table1.col from b..table1 where a..table1.id=b..table1.idTop
2 楼hdhai9451(☆新人类☆)回复于 2005-03-04 12:03:03 得分 10
update tabA
set col=a.col,col2=a.col2
from tabB a
where id=a.idTop
3 楼szztao(szztao)回复于 2005-03-04 12:06:28 得分 0
上面两位的方案都涉及到具体的字段名了,不好 :(
我的要求类似于数据库表的同步,但希望自己用存储过程实现,同时表的字段都比较多(30多个)
有没有好方法??? 谢了!!!Top
4 楼zheninchangjiang(徐若涵)回复于 2005-03-04 12:11:32 得分 40
update肯定是要涉及列的
alter table tablname disable constraint all
go
delete tablename
insert into tablename select * from b..tablename
alter table tablename enable constraint all
goTop
5 楼pbsql(风云)回复于 2005-03-04 12:12:09 得分 10
你不涉及到具体的字段名又怎么更新呢,从系统表里取更麻烦Top
6 楼zjcxc(邹建)回复于 2005-03-04 12:12:40 得分 30
用sql的发布/订阅吧,存储过程要写的话,估计得累死
而且因为主键的关系,如果一个表的数据连主键值都改了,而且改的是多条记录的话,在触发器中就无法对应新/旧记录,这样就势必限制只允许修改一条记录,这在有外键的表中往往是不现实的
而且,要实现即时更新的话,必须用触发器来取得当前操作的记录情况,这就势必为所有要同步的表写触发咕嘟Top
7 楼szztao(szztao)回复于 2005-03-04 12:28:44 得分 0
zheninchangjiang(我爱燕子) 的方法也许不错,值得试试,先谢过了!
zjcxc(邹建) 老兄分析的也挺仔细的。
好好,多谢多谢各位!!!Top




