+ -
当前位置:首页 → 问答吧 → 请教一下关于触发器执行问题

请教一下关于触发器执行问题

时间:2011-11-04

来源:互联网


serial_oid name name_flag
1 张三 1
2 李四 1
3 小李 2

我在该表有一个删除触发器
CREATE TRIGGER [dbo].[DeletePlan_CRK]
  ON [dbo].[Plan_Letter_Ticket_Sheet]
  AFTER DELETE
AS 
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
declare @namechar(15)
select @name=name from deleted
print @name
end

当我执行delete from 表1 where name_flag='1' 时,为什么只显示了一个张三,而李四没有执行,也就是说只执行了一次,这种问题我该怎么办呢

作者: xiaobifei   发布时间: 2011-11-04

SQL code
select @name=isnull(@name+',','')+name from deleted


你就能知道李四也执行了.

作者: qianjin036a   发布时间: 2011-11-04

你那样写法,只能查询到序列的最后一个name,前一个被后一个替代掉了.

想起黑瞎子到地里掰苞米的童话故事.

作者: qianjin036a   发布时间: 2011-11-04

引用 2 楼 qianjin036a 的回复:
你那样写法,只能查询到序列的最后一个name,前一个被后一个替代掉了.

想起黑瞎子到地里掰苞米的童话故事.

...
发现很多触发器这个问题,然后触发器背黑锅

作者: Haiwer   发布时间: 2011-11-04

SQL code
declare @name NVARCHAR(max)

SET @name=STUFF((SELECT ','+NAME FROM DELETED FOR XML PATH('')),1,1,'')
print @name

作者: roy_88   发布时间: 2011-11-04

引用 2 楼 qianjin036a 的回复:
你那样写法,只能查询到序列的最后一个name,前一个被后一个替代掉了.

想起黑瞎子到地里掰苞米的童话故事.


作者: fredrickhu   发布时间: 2011-11-04