sql触发器:A表与B表的结构完全相同,把A表的增删改操作全都反映到B表中,即结果要求B表是A表的一个副本。
请问该触发器怎么写?谢

解决方案 »

  1.   

    表结构:StudentInfo(id,StudentName,Sex,Age),表UserInfo结构与它相同。
    要求当通过界面给表StudentInfo增加行记录时,表UserInfo也同样增加这样一条记录;
    ...........................修改........................修改..........;
    ...........................删除........................删除..........。
    这样做的目的是,A应用系统只能对表StudentInfo进行增删改操作,而B应用系统只能对表UserInfo进行增删改操作。
      

  2.   

    create trigger inserttableB
    on tableA 
    after insert
    insert into tableB select * from inserted
    go
    create trigger updatetableB
    on tableA 
    after update
    delete from tableB where id in (select id from deleted)
    inert into tableB select * from inserted
    go
    create trigger deletetableB
    on tableA 
    after delete
    delete from tableB where id in (select id from deleted)
    go
    --需要注意的是,tableB表的id不能为自增列.
      

  3.   

    --触发器的操作1create table 化验室纱组(本厂编号 int,客户 int,色号 int,纱支 int)
    create table 化验室布组(本厂编号 int,客户 int,色号 int,布类 int)
    go
    create trigger my_trig on 化验室纱组 for insert ,update ,delete
    as
    if not exists(select 1 from inserted)
       delete 化验室布组 from deleted t where 化验室布组.本厂编号 = t.本厂编号 
    else if not exists(select 1 from deleted) 
       insert into 化验室布组(本厂编号 ,客户 ,色号) select 本厂编号 ,客户 ,色号 from inserted
    else
       update 化验室布组 set 客户 = t.客户 , 色号 = t.色号 from inserted t where 化验室布组.本厂编号 = t.本厂编号
    go--1、insert 对化验室纱组插入数据,然后查看化验室布组表的数据
    insert into 化验室纱组 values(1 , 2 , 3 , 4)
    insert into 化验室纱组 values(5 , 6 , 7 , 8)
    go
    select * from 化验室布组
    /*
    本厂编号        客户          色号          布类          
    ----------- ----------- ----------- ----------- 
    1           2           3           NULL
    5           6           7           NULL(所影响的行数为 2 行)
    */--2、update , 更改化验室纱组表中本厂编号=1的色号=6
    update 化验室纱组 set 色号 = 6 where 本厂编号 = 1
    go
    select * from 化验室布组
    /*
    本厂编号        客户          色号          布类          
    ----------- ----------- ----------- ----------- 
    1           2           6           NULL
    5           6           7           NULL(所影响的行数为 2 行)
    */--3、delete 化验室纱组表中本厂编号=1的那条数据
    delete from 化验室纱组 where 本厂编号 = 1
    go
    select * from 化验室布组
    /*
    本厂编号        客户          色号          布类          
    ----------- ----------- ----------- ----------- 
    5           6           7           NULL(所影响的行数为 1 行)
    */drop table 化验室纱组 , 化验室布组
      

  4.   

    有个错误,updatetableB触发器上的插入操作命令写错了,自己纠正一下吧.