create Trigger ins on test1.user
for insert
 insert into test2.user select * from insertedcreate Trigger upd on test1.user
for update
 update test2.user
 set test2.username = inserted.username,
 test2.password = inserted.password
 where test2.id = inserted.id

解决方案 »

  1.   

    create Trigger upd on test1.user
    for update
    declare @myid varchar(20)
    select @myid = id from test2.user where id = inserted.id
    if @myid = null
     insert into test2.user select * from inserted
    else
     update test2.user
     set test2.username = inserted.username,
     test2.password = inserted.password
     where test2.id = inserted.id
      

  2.   

    谢谢各位,也许我没有说清意思
    我的目的是为了保持这两张表的数据一样,也就是说,用户有可能在test1这个库的user表中添加
    或修改数据,也有可能在test2的库中添加或修改数据,不管在哪个库里面修改,我希望这两具库的
    这两个表数据一直保持一样.有什么好方法吗?
      

  3.   

    这样子的话,你可以也同样在test2.user中也建立两个触发器,写法和上两个一样,只是把test2改为test1就好了
      

  4.   

    的确啊,当进行添加操作时,这样做没问题,但是当进行修改操作时呢?如果两个表都用个for updater的触发器,
    不是要形成死循环的嘛?
      

  5.   

    create Trigger ins on test1.user
    for insert
     insert into test2.user select * from inserted id not in(select id from test2..user)
    create Trigger upd on test1.user
    for update
     update test2.user
     set test2.username = inserted.username,
     test2.password = inserted.password
     from inserted
     where test2.id = inserted.id and (test2.username <> inserted.username or test2.password <>inserted.password)
    不过上述方法最好不要使用
      

  6.   

    数据库test1,有一个表user,字段为id,username,password
    数据库test2,有一个表user,字段为id,username,password
    当test1的user新增一条记录时,test2的user也要新增相同的一条记录.
    当test1的user修改一条记录时,test2的user中如果没有这条记录,则新增这条记录,如果存在,则也作相应的修改.
    ~~~~~~~~~~~~~~~~~~~~上面是已经有人提出来了,那如果表里面有很多字段?如果按照这样的写法:create Trigger upd on test1.user
    for update
     update test2.user
     set test2.username = inserted.username,
     test2.password = inserted.password
     where test2.id = inserted.id不就要写很长吗?有 比较好的方法吗?谢谢了!急!!!