试试这个:create trigger dbo.trigger_tb_demo_update
on DB1.dbo.TB_Demo
for update
asif update(str1)
begin
update DB2.dbo.TB_Demo
set str1 = i.str1
from DB2.dbo.TB_Demo t
inner join inserted i
on t.SJHM = i.SJHM
endif update(str2)
begin
update DB2.dbo.TB_Demo
set str2 = i.str2
from DB2.dbo.TB_Demo t
inner join inserted i
on t.SJHM = i.SJHM
endif update(str3)
begin
update DB2.dbo.TB_Demo
set str3 = i.str3
from DB2.dbo.TB_Demo t
inner join inserted i
on t.SJHM = i.SJHM
endgo
on DB1.dbo.TB_Demo
for update
asif update(str1)
begin
update DB2.dbo.TB_Demo
set str1 = i.str1
from DB2.dbo.TB_Demo t
inner join inserted i
on t.SJHM = i.SJHM
endif update(str2)
begin
update DB2.dbo.TB_Demo
set str2 = i.str2
from DB2.dbo.TB_Demo t
inner join inserted i
on t.SJHM = i.SJHM
endif update(str3)
begin
update DB2.dbo.TB_Demo
set str3 = i.str3
from DB2.dbo.TB_Demo t
inner join inserted i
on t.SJHM = i.SJHM
endgo
EXEC master.dbo.sp_addlinkedserver @server = N'Link',
@srvproduct='ms',
@provider=N'SQLNCLI',
@datasrc=N'远程ip地址,端口'EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'Link',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'用户名',
@rmtpassword='密码'
--查询远程表
select *
from [Link].远程数据库名.dbo.表
--把本地表的数据,复制到远程表
insert into [Link].远程数据库名.dbo.表(列的列表)
select 列
from 本地表
CREATE TRIGGER [dbo].[TRI_Synchro_update]
on DB1..TB_Demo for update
as
begin
begin tran
update DB2..TB_Demo set Str1=b.Str1,Str2=b.Str2,Str3=b.Str3 from DB2..TB_Demo as a inner join Inserted as b on a.sjhm=b.sjhm
commit tran
end
呵呵,可以,你写的是对的,不过不需要事务,因为触发器本来就是在相应的触发语句的事务中的,这样就行:
CREATE TRIGGER [dbo].[TRI_Synchro_update]
on DB1..TB_Demo for update
as
begin update DB2..TB_Demo set Str1=b.Str1,Str2=b.Str2,Str3=b.Str3
from DB2..TB_Demo as a
inner join Inserted as b on a.sjhm=b.sjhm
end