如何用触发器实现,删除或修改表时,如果"审核人"字段不是空,就禁止修改或删除,可以实现吗?
-------------
也就是实现审核后禁止修改的功能,判断的依据就是一个字段,比如字段名为:审核人,
如果这个字段有值,则说明审核了,不能删除或修改,如果这个字段为null或空字串,则说明没审核,可以修改或删除,如何实现呢?
以前没用过触发器,在前台程序中实现,感觉代码太多,每次保存修改时或删除时都要判断这条记录是否已经审核,代码不优化,所以想在触发器中实现,
1,我的想法可以实现吗?如何写代码.
2,我的想法思路对吗?类似于这种审核后禁写的功能,用触发器来实现合理吗?(我主要觉得在前台进行数据的删除或修改时,要先判断记录是否已审核,有点太麻烦了.代码也不严谨)顺便问:对于审核后禁写,还有更好的实现方法吗?

解决方案 »

  1.   


    create trriger 触发器 on t
    after update,delete
    as
    begin
      if exists(select 1 from deleted where 审核人 is not null  )
         begin
           rollback
           print '禁止修改!'
         end
    end
      

  2.   

    create trigger triggername
    on table
    INSTEAD OF delete 
    as 
    begin
        delete table from (select * from deleted where 审核人 is not null)
    end
       gocreate trigger triggername
    on table
    INSTEAD OF update
    as 
    begin
        update table 
        set ...
        from inserted i
        left join table a
        on a.id = b.id
    end
         
      

  3.   

    好象这个功能用触发器实现还不行,因为想反审核都做不了。因为反审核就是令“审核人”字段为 null,可是加了触发器后,我无法修改审核人字段呀?