P_ryjbxx表有字段
Pid
Ghid
Pname
Age
Sex
……等十几个字段Web_user表里有字段
ID
Ghid
Password
这三个字段现在是P_ryjbxx表如果插入一条数据,要同时往Web_user表里插入P_ryjbxx的Ghid
还有就是如果P_ryjbxx的Ghid被修改了,Web_user表里的也要修改Ghid
再有就是删除了。
例如P_ryjbxx里Ghid是1的数据被删除了,那么Web_user里Ghid=1的一条数据也要删除这个用触发器怎么实现啊?代码我不会写。大家帮忙写一下
谢谢啦

解决方案 »

  1.   

    create trigger tr_test
    on pr_ryjbxx
    for insert,update,delete
    as
    begin
       if eixsts(select 1 from web_user a ,inserted b where b.ghid = a.id )
           update b
           set ....
           from web_user a ,inserted b
           where ...
       else
           insert into web_user select * from inserted i where not exists(select 1 from web_user where ghid = i.id)
     
       delete a from web_user a where exists(select 1 from deleted where a.ghid = id)
    end
    go
      

  2.   

    能不能不用...代替代码啊?我对SQL触发器的语句一窍不通啊。最好帮我写全点,谢谢啊
      

  3.   

    create trigger tr_insert on P_ryjbxx
    for insert 
    as declare @Ghid char(10)select @Ghid=Ghid from inserted 
    insert into web_user (Ghid ) values (@Ghid) 
    create trigger tr_delete on P_ryjbxx
    for delete 
    as declare @pid char(10),@Ghid char(10)
    select @Ghid=Ghid from deleted
    delete web_user where Ghid=@Ghid
    --update 的触发器也是这样写。仿照着就可以了,你试着写下吧--还有简单一些的写法,但这样写估计你比较好理解
      

  4.   

    我模仿了一下,你看下是不是这样写UPDATE?
    create trigger tr_update on P_ryjbxx
    for update
    as declare @pid char(10),@Ghid char(10)
    select @Ghid=Ghid from updated
    update web_user set Ghid=@Ghid where @Ghid=Ghid
      

  5.   

    不对,应该这样吧?
    create trigger tr_update on P_ryjbxx
    for update
    as declare @pid char(10),@Ghid char(10)
    select @Ghid=Ghid from updated
    update Web_User set Ghid=@Ghid where Ghid=@Ghid
      

  6.   

    怎么加上触发器后报错了?
    报的什么不能在Web_user中插入重复键