create trigger on ta for delete as delete from tb where activityID = (select activityID from deleted) go
可以参考 http://msdn.microsoft.com/zh-cn/library/ms189799.aspx例如类似这样的代码:delete t from 第二张表 as t inner join deleted as d on t.activityID=d.activityID 这个语句,对于建立在第一张表上的delete触发器,当有人在第一张表上删除一堆记录时,其deleted表中的数据就会自动关联到第二张表。不要想想当然地以为“deleted表中只有、而且一定有一条记录”。你写出来的代码一看就应该知道deleted中可能有0到n条记录,都是运行正确的。这是一个比较简单,但是初学者总是不知道的错误。
有些数据库(例如oracle)是为每一条记录触发一次触发器的,而sql server则是为整个语句触发一次触发器。因此写where activityID = (select activityID from deleted)这不是正确的t-sql代码。
SQL codedelete t from 第二张表 as t inner join deleted as d on t.activityID=d.activityID这个语句,对于建立在第一张表上的delete触发器,当…… [/Quote]t 和d分别代表什么?表名?可是“delete t from 第二张表 as t inner join deleted as d”我又看不懂了
create trigger on activity for delete as delete from activity where activityID = (select activityID from deleted) go
as
delete from tb where activityID = (select activityID from deleted)
go
on t.activityID=d.activityID
这个语句,对于建立在第一张表上的delete触发器,当有人在第一张表上删除一堆记录时,其deleted表中的数据就会自动关联到第二张表。不要想想当然地以为“deleted表中只有、而且一定有一条记录”。你写出来的代码一看就应该知道deleted中可能有0到n条记录,都是运行正确的。这是一个比较简单,但是初学者总是不知道的错误。
on t.activityID=d.activityID这个语句,对于建立在第一张表上的delete触发器,当……
[/Quote]t 和d分别代表什么?表名?可是“delete t from 第二张表 as t inner join deleted as d”我又看不懂了
as
delete from activity where activityID = (select activityID from deleted)
go