如何用触发器实现,删除或修改表时,如果"审核人"字段不是空,就禁止修改或删除,可以实现吗?

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

顺便问:对于审核后禁写,还有更好的实现方法吗?
...全文
143 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chouqin681 2007-12-07
这个用应用程序来判断似乎更合理呀
-----------------------
如果用前台来实现,在前台程序中,每进行一次保存或是删除,都要进行是否审核的判断,感觉太麻烦了.所以才想到用触发器来实现.
是不是我的办法太笨呀???
  • 打赏
  • 举报
回复
-狙击手- 2007-12-07
这个用应用程序来判断似乎更合理呀
  • 打赏
  • 举报
回复
chouqin681 2007-12-07
好象这个功能用触发器实现还不行,因为想反审核都做不了。因为反审核就是令“审核人”字段为 null,可是加了触发器后,我无法修改审核人字段呀?
  • 打赏
  • 举报
回复
-狙击手- 2007-12-07
create trigger triggername
on table
INSTEAD OF delete
as
begin
delete table from (select * from deleted where 审核人 is not null)
end


go



create 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
  • 打赏
  • 举报
回复
fa_ge 2007-12-07

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

  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2007-12-07 10:30
社区公告
暂无公告