- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
刚开始时,这个表的字段很少(10个以内),前开发者把这个表的所有存储过程与触发器以及表函数全是写死了。用户每添加一些字段,都需要手动去更改这些存储过程与触发器以及表函数。现在这个表的字段已经高达300个以上,有可能还会增长,因此Insus.NET的业务就是把这此静态全改写为动态处理。 然而有一个问题一直困拢至昨天,昨天是星期天本应是休息的,但是这个问题没有解决,因此这天算不上休息了。 问题就是改写表的触发器,涉及到EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表,如: 。
复制代码代码如下
EXECUTE('SELECT '+ @N +' = ISNULL(['+ @I +'],0) FROM inserted') 。
当你尝试执行上面的SQL语句,会得到一个异常提示:invalid object name 'inserted'。我们无法显示访问INSERTED或DELETED的内部临时触发表。 由于INSERTED或是DELETED表是动态驻留在内存中,而不是存储在数据库中,它不是显式的。触发器的执行是在导致触发器被触发的执行计划中。当我们使用EXEC(EXECUTE)或sp_executesql执行动态生成的SQL语句时,它却是另外一个单独的执行计划。两者之间的资源无法相互访问,再加上计划执行完毕,内存也随之释放资源了。 但是问题还是需要解决,Insus.NET想起的还是临时表。可以把INSERTED或DELETED表中的数据,首先转换入临时表了。这样子,我们就可以对临时表的数据进行处理了。 。
复制代码代码如下
SELECT * INTO #inserted FROM INSERTED SELeCT * INTO #deleted FROM DELETED 。
实现代码: 。
复制代码代码如下
DECLARE @F NVARCHAR(MAX) = CONVERT(NVARCHAR(MAX),@I) --@I动态字段 EXECUTE ('SELECT ['+ @F +'] FROM #deleted) 。
最后此篇关于EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表的文章就讲到这里了,如果你想了解更多关于EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我计划在网页上安装 Facebook 评论模块/插件,比方说: http://www.example.com/ 是否可以将用户重定向到网站内的另一个登录页面?假设我想在点击发表评论后将它们发送到这里:
我是一名优秀的程序员,十分优秀!