导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

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

顺便问:对于审核后禁写,还有更好的实现方法吗?
...全文
93 点赞 收藏 5
写回复
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

回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告