以下是我当前使用的代码。但有报错,应该是在exec  中访问不了deleted表。
应该如何来解决这个问题呦,请大家帮帮忙,在线等!CREATE TRIGGER [IHandle_D] ON [dbo].[InfoHandle] 
FOR DELETE 
AS
Declare @strTableName as varchar(50)
select @strTableName=HandleItem from QInfoHandle
 where HandleID = (select IHandleType from Deleted)Declare @strSQL as varchar(5000)
select @strSQL = 'delete from '+@strTableName +' where HandleID in (select IHandleID from Deleted)'
exec(@strSQL)

解决方案 »

  1.   

    你的写法是没有问题的select @strTableName=HandleItem from QInfoHandle
     where HandleID = (select IHandleType from Deleted)
    这条语句是否只返回一条记录,如果是,加一条
    print @strSQL 
    语句,看结果是否正确
      

  2.   

    klts_pfl() 提出的确实也是一个潜在问题,但不是这个问题的重点,
    我现在想解决的是下面语句出错Declare @strSQL as varchar(5000)
    select @strSQL = 'delete from '+@strTableName +' where HandleID in (select IHandleID from Deleted)'
    exec(@strSQL)问题:在exec中怎么才能访问到deleted表。或者大家提供别的解决办法!
      

  3.   

    有什么办法能同时访问到触法器产生的deleted表和由字符串表名返回的表。
      

  4.   

    CREATE TRIGGER [IHandle_D] ON [dbo].[InfoHandle] 
    FOR DELETE 
    AS
    create table #a (IHandleID int)
    insert #a select IHandleID from deletedDeclare @strTableName as varchar(255)
    select @strTableName=HandleItem from QInfoHandle
     where HandleID in (select IHandleType from Deleted)Declare @strSQL as varchar(5000)
    select @strSQL = 'delete from '+@strTableName +' where HandleID in (select IHandleID from #a)'
    exec(@strSQL)