看一下下面的触发器语句有没有错误啊,帮忙指点一下啊CREATE trigger trg_material
on Material
for delete
as 
  declare @PublisherID  varchar(10),@AuthorID varchar(20)
  select @PublisherID =PublisherID, @AuthorID=AuthorID from deleted  delete from Publisher where PublisherID =@PublisherID 
  delete from Author where AuthorID =@AuthorID

解决方案 »

  1.   

    有問題,如果是批量刪除數據的話,你的觸發器就用問題,Publisher、Author中會有數據沒有刪除掉。
      

  2.   

    改為如下CREATE trigger trg_material
    on Material
    for delete
    as 
    Delete A From Publisher A Inner Join Deleted B On A.PublisherID=B.PublisherID
    Delete A From Author A Inner Join Deleted B On A.AuthorID=B.AuthorID
    GO
      

  3.   

    ikgan(ikgan) ( ) 信誉:100  2006-06-30 09:42:00  得分: 0  
     
     
       加个BEGIN
      
     
    -----------------------
    可以不用加
      

  4.   

    paoluo(一天到晚游泳的鱼)写的对.
    用户执行一个sql语句导致多条记录被修改时,触发器中的deleted表或inserted表就会有对应的多条记录副本.例如:
    批量删除时deleted表中会有很多记录的,而不是一个记录.
    批量更新时deleted表和inserted表中也是有很多记录的.
    要根据需要与deleted表或inserted表进行连接.
      

  5.   

    inserted ,deleted 可认为是一个逻辑表 包含 一次插入或删除的多条信息。 
    如果每一次 是一条记录的话lz的代码没有错误。 如果超过一条。
    select @PublisherID =PublisherID, @AuthorID=AuthorID from deleted 得到的结果就不对拉。