+ -
当前位置:首页 → 问答吧 → 求助 触发器

求助 触发器

时间:2011-12-18

来源:互联网

在两张数据表中如 activity(activityID,userid)tbactivity(activityID) 如何写触发器 当删除第一张表中的数据时同时删除第二张表中的相应数据

作者: momo_yuanyuan   发布时间: 2011-12-18

SQL code
create trigger on ta for delete
as  
delete from tb where activityID = (select activityID from deleted)
go


作者: hllfl   发布时间: 2011-12-18

可以参考 http://msdn.microsoft.com/zh-cn/library/ms189799.aspx

例如类似这样的代码:SQL code
delete t from 第二张表 as t inner join deleted as d
    on t.activityID=d.activityID

这个语句,对于建立在第一张表上的delete触发器,当有人在第一张表上删除一堆记录时,其deleted表中的数据就会自动关联到第二张表。

不要想想当然地以为“deleted表中只有、而且一定有一条记录”。你写出来的代码一看就应该知道deleted中可能有0到n条记录,都是运行正确的。这是一个比较简单,但是初学者总是不知道的错误。

作者: sp1234   发布时间: 2011-12-18

有些数据库(例如oracle)是为每一条记录触发一次触发器的,而sql server则是为整个语句触发一次触发器。因此写HTML code
where activityID = (select activityID from deleted)
这不是正确的t-sql代码。

作者: sp1234   发布时间: 2011-12-18