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

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

顺便问:对于审核后禁写,还有更好的实现方法吗?
...全文
167 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧