位置: 编程技术 - 正文

EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表(execve函数)

编辑:rootadmin
刚开始时,这个表的字段很少(个以内),前开发者把这个表的所有存储过程与触发器以及表函数全是写死了。用户每添加一些字段,都需要手动去更改这些存储过程与触发器以及表函数。现在这个表的字段已经高达个以上,有可能还会增长,因此Insus.NET的业务就是把这此静态全改写为动态处理。 然而有一个问题一直困拢至昨天,昨天是星期天本应是休息的,但是这个问题没有解决,因此这天算不上休息了。 问题就是改写表的触发器,涉及到EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表,如: 当你尝试执行上面的SQL语句,会得到一个异常提示:invalid object name 'inserted'。我们无法显示访问INSERTED或DELETED的内部临时触发表。 由于INSERTED或是DELETED表是动态驻留在内存中,而不是存储在数据库中,它不是显式的。触发器的执行是在导致触发器被触发的执行计划中。当我们使用EXEC(EXECUTE)或sp_executesql执行动态生成的SQL语句时,它却是另外一个单独的执行计划。两者之间的资源无法相互访问,再加上计划执行完毕,内存也随之释放资源了。 但是问题还是需要解决,Insus.NET想起的还是临时表。可以把INSERTED或DELETED表中的数据,首先转换入临时表了。这样子,我们就可以对临时表的数据进行处理了。 实现代码:

推荐整理分享EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表(execve函数),希望有所帮助,仅作参考,欢迎阅读内容。

EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表(execve函数)

文章相关热门搜索词:execve函数,execute 函数,.execute(),executed,exec函数用法,exec函数的作用,exe函数怎么使用,execute 函数,内容如对您有帮助,希望把文章链接给更多的朋友!

一次性压缩Sqlserver中所有库日志的存储过程 有没有办法更快一点?有没有办法一次性收缩所有数据库?alterdatabase数据库名setrecoverysimplegodbccshrinkdatabase(数据库名)goalterdatabase数据库名setrecoveryfullgo

SQL优化基础 使用索引(一个小例子) 按照本文操作和体会,会对sql优化有个基本最简单的了解,其他深入还需要更多资料和实践的学习:1.建表:createtablesite_user(idintIDENTITY(1,1)PRIMARYKEY,[name]v

SQLServer Execpt和not in 性能区别 主要讲except和notin的性能上的区别。CREATETABLEtb1(IDint)CREATETABLEtb2(IDint)BEGINTRANDECLARE@iINT=WHILE@i0beginINSERTINTOdbo.tb1VALUES(@i--v-int)SET@i=@i-1endCOMMIT我测试的时候tb

本文链接地址:https://www.jiuchutong.com/biancheng/348511.html 转载请保留说明!

上一篇:在SQL触发器或存储过程中获取在程序登录的用户(在sql server中触发器不具有什么类型)

下一篇:一次性压缩Sqlserver2005中所有库日志的存储过程(一次性压缩洗脸巾)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络