新手触发器问题

unwonted 2006-06-23 03:55:08
请问如果用
delete from [table] where id in '.....'
来删除数据

那么[table]表的删除解发器是执行一次,还是在'....'包含在内的N次??

在线等.
...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2006-06-23
  • 打赏
  • 举报
回复
这个我倒没有注意过是最后一个,还是第一个。
你自己测试一下。建一个tLog表,id int

select @id = [id] from deleted
INSERT tLog SELECT @id

通常情况下,对普通表而言,是先进先出,@id应该是最先进去的那个值. 但deleted里面说不上会是按堆栈原则。呵呵,自己试下。呆会我自己也试一下。
unwonted 2006-06-23
  • 打赏
  • 举报
回复
另外,如果in '....'里有多个值,在触发器里这样写

select @id = [id] from deleted

那么@id 只会得到最后的那个值了?
LouisXIV 2006-06-23
  • 打赏
  • 举报
回复
一次执行触发一次,与影响行数无关
unwonted 2006-06-23
  • 打赏
  • 举报
回复
明白了,谢谢
fcuandy 2006-06-23
  • 打赏
  • 举报
回复
触发器跟据执行命令的次数n 而触发n次 进行相应的批操作 n次。
而不是根具所影响的记录数m去触发m次。

比如执行
DELETE FROM tb WHERE ID>2
当ID>2的记录有3条时,触发器只触发一次,进而相应批语句也执行一次。 因为DELETE命令只执行一次, 不因为影响3条记录而产生三次触发。

34,593

社区成员

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

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