请问一下触发器的问题

kncomputer 2003-10-02 10:57:08
在用户表t_user中,为了防止其中的一个用户sa被删除,我写了一个触发器:

CREATE TRIGGER [delSA] ON [dbo].[t_user]
FOR DELETE
AS

if (select login from deleted) = 'sa'
rollback


但是这样一来,如果执行下面这句删除语句:
delete from t_user where IsPass = 0

如果这条语句所删除的不止一条记录,就会出错:

子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。

请问如何做,才能保留那个For DELETE的触发器,又能让表可以接触批量删除的语句呢?谢谢!
...全文
38 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-10-03
  • 打赏
  • 举报
回复
同意。

if exists (select 1 from deleted where login='sa')
rollback tran
蓝天 2003-10-02
  • 打赏
  • 举报
回复
if exists (select 1 from deleted where login ='sa') rollback

34,875

社区成员

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

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