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

解决方案 »

  1.   

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

  2.   

    可以参考 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条记录,都是运行正确的。这是一个比较简单,但是初学者总是不知道的错误。
      

  3.   

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

  4.   

    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”我又看不懂了
      

  5.   

    create trigger on activity for delete
    as  
    delete from activity where activityID = (select activityID from deleted)
    go