Dict.CN 在线词典, 英语学习, 在线翻译

sunnywang

smile forever.

 

触发器中exec执行的查询字符串不能对内存表操作

 设计一个触发器,需要先生成查询字符串,再用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

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

posted on 2009-05-13 14:10 sunnywang 阅读(499) 评论(0)  编辑 收藏 引用 所属分类: learner

只有注册用户登录后才能发表评论。

导航

统计

公告

silence is gold.

常用链接

留言簿(3)

随笔分类

相册

收藏夹

BI

english

friends' blog

knowledge

PM

tools

universities

搜索

最新评论