如果数据库没有在同一台服务器.要创建联接服务器.然后就和本机跨数据库同步一样的操作.--创建链接服务器
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go
--同一服务器.
create table t_a(id int identity(1,1),username varchar(20))create table t_b(id int identity(1,1),username varchar(20))create trigger tr_a on t_a
for update,insert,delete
as
alter table t_b  DISABLE TRIGGER tr_b
  ----------------------------------
if not exists (select * from deleted) --插入
insert t_b(username) select username from inserted
else if not exists (select * from inserted)--删除
delete t_b where id in (select id from deleted)
else--更新
update a set a.username=i.username from t_b as a,inserted as i where a.id=i.id
alter table t_b  ENABLE TRIGGER tr_b------------------------------------------
create trigger tr_b on t_b
for update,insert,delete
as
alter table t_a  DISABLE TRIGGER tr_a
  ----------------------------------
if not exists (select * from deleted) --插入
insert t_a(username) select username from inserted 
else if not exists (select * from inserted) --删除
delete t_a where id in (select id from deleted)
else --更新
update a set a.username=i.username from t_a as a,inserted as i where a.id=i.id
alter table t_a  ENABLE TRIGGER tr_a

解决方案 »

  1.   

    首先,要把nested triggers 选项关闭
    USE master
    EXEC sp_configure 'nested triggers', '0'
    RECONFIGURE WITH OVERRIDE
    go分别建立触发器
    create trigger a.dbo.tr_aa
    on a.dbo.aa
    for insert ,delete,update
    as
    delete b
    from b.dbo.bb b,deleted d
    where b.key=d.keydelete c
    from c.dbo.cc b,deleted d
    where c.key=d.keyinsert b.dbo.bb
    select * from insertedinsert c.dbo.cc
    select * from insertedgo--其他触发器类似
      

  2.   

    TO: zlp321002(龙卷风2006)你提供的代码似乎只是对同一台服务器的同一个数据库中的两个表进行操作吧或许本人愚钝,从代码中我看不出两个表是来自于不同的两个数据库啊只是t_a, t_b的两个触发器相互影响而已TO:i9988(冒牌j9988 V0.2)你提供的方法我还没有试,不过从代码上看应该可行的^_^
      

  3.   

    不是的,老兄,你没有理解zlp321002(龙卷风2006) 的意思。exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
    exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'上述两条代码可以连接任何服务器,你如果操作多个数据库的话,可以连接多个服务器,依此类推