各位大哥大师,,,小弟遇到一个难题,望帮帮忙,不胜感激。下面有两个表,一个是工资表  SalaryByLedger   一个表是 月份期间表  company现在是,当这个月份结账的时候,工资表这个月的数据不能增加,删除,修改!请问触发器怎么写呢???下面是表的字段:create table SalaryByLedger         (
          hrcode  varchar(50) ,   --工号
            hrname  varchar(100),   --姓名
            pay     money  ,        --工资
            periodid varchar(20)    --月份
      )create table company
     (
         periodid varchar(20)   ,   --月份
           companyid varchar(50) ,    --公司
          isnot   int                 --是否结账    默认为0 0的时候为没结账,,1的时候为结账
      )

解决方案 »

  1.   

    --try
    create trigger tri_name on SalaryByLedger
    for insert ,update ,delete
    as 
      if exists(select 1 from company where isnot=1 )
         rollback
      

  2.   

    create trigger tr_all
    on SalaryByLedger
    instead of insert,delete ,update
    as
    begin
        if exists(select 1 from company where isnot =1)
            rollback...
    end
    go
      

  3.   

    --try->
    create trigger my_tri on SalaryByLedger  
    for insert,update,delete
    as
    if exists(select 1 from inserted)--插入,更新
    begin
    if exists (select 1  from inserted i where i.periodid  in (select periodid from company where isnot=1)) 
    rollback
    endif exists(select 1 from deleted)--删除的场合begin
    if exists (select 1  from deleted d where d.periodid  in (select periodid from company where isnot=1)) 
    rollback
    endgo