主表   存放索引信息
表1   中存放明细记录
表2   中存放明细记录
表。。中存放明细记录
表n   中存放明细记录
postlog --主表
recordNum    datatype
1             table1
2             table2
....
4             table4现在要用一个触发器实现,在删除主表记录的同时,删除对应明细表中的详细记录。下面是我写的,但不行,好像exec用的不对,触发器不支持动态的?
CREATE TRIGGER delDetailRecord
ON postlog
FOR DELETE 
AS
   declare @tableName nvarchar(16)  
   declare @postSerial int
   declare @sqlstr nvarchar(1024)select @tableName=datatype  from deleted
select @postSerial = recordNum from deleted--set @sqlstr =N' delete from ' +@tableName + N' where updatetimecode = '+ CAST(@postSerial AS VARCHAR(16))
--exec @sqlstr

解决方案 »

  1.   

    exec sp_execute   @sqlstr 
      

  2.   

    exec sp_execute   @sqlstr 这个在触发器中能用吗?
      

  3.   

     将3个参数@tableName、@postSerial、@sqlstr 传给存储过程。
    然后在触发器中调用存储过程就可以了。  
      

  4.   

    CREATE   TRIGGER   delDetailRecord 
    ON   postlog 
    FOR   DELETE   
    AS 
          declare   @tableName   nvarchar(16)     
          declare   @postSerial   int 
          declare   @sqlstr   nvarchar(1024) select   @tableName=datatype     from   deleted 
    select   @postSerial   =   recordNum   from   deleted delete   from   postlog    where   updatetimecode   =   @postSerial 
    直接写SQL语句或者调用存储过程就可以了,搞这么复杂干啥
      

  5.   

    create table postlog(postSerial int,tableName varchar(10))
    insert into postlog select 1,'table1'
    insert into postlog select 2,'table2'
    insert into postlog select 4,'table4'declare   @tableName   nvarchar(16)    
    declare   @postSerial   int
    declare   @sqlstr varchar(8000)
    set @sqlstr=''
    select @sqlstr=@sqlstr+' delete from '+tableName+' where postSerial ='+ ltrim(postSerial)
    from postlog
    print @sqlstr delete from table1 where postSerial =1 
    delete from table2 where postSerial =2 
    delete from table4 where postSerial =4?自己改改
      

  6.   

    先谢谢各位了,,,,to cnming:直接写SQL语句或者调用存储过程就可以了,搞这么复杂干啥
    hehe ,主要为学习,to wzy_love_sly ,表是动态的,用户随时可以增加。你的代码具体还没看太懂。
    将3个参数@tableName、@postSerial、@sqlstr   传给存储过程。
    然后在触发器中调用存储过程就可以了。     想法不错啊,但怎么实现?有案例或相关网址吗?将3个参数@tableName、@postSerial、@sqlstr   传给存储过程。 和 在触发器中调用,两个怎么衔接啊?