设计一个触发器,需要先生成查询字符串,再用exec执行,发现exec执行的查询字符串中若要对inserted和deleted内存表操作时,会提示对象不存在。是不是exec执行的查询字符串中不能对inserted和deleted进行操作?目前暂时采取先将inserted和deleted存储在全局临时表中,在查询字符串中对全局临时表进行操作。
     源代码如下:
select field into ##temp from inserted

declare @sql as varchar(1000)
declare @fieldName as varchar(20)
if update(field1)
    
set @fieldName='field1'
else if update(field2)
    
set @fieldName='field2'
set @sql='insert table1 (fieldName,fieldValue) select '''+@fieldName+''',field from ##temp'
exec @sql
drop table ##table
原先的代码是:
declare @sql as varchar(1000)
declare @fieldName as varchar(20)
if update(field1)
    
set @fieldName='field1'
else if update(field2)
    
set @fieldName='field2'
set @sql='insert table1 (fieldName,fieldValue) select '''+@fieldName+''',field from inserted'
exec @sql

不知是使用方法不对还是确实有这样的限制