SQLServer临时表查找和删除的实现代码

SQLServer临时表查找和删除的实现代码
如果存在(SELECT * FROM tempdb .. sysobjects id是object_id('tempdb .. # temp))
表#温度下降
光标
您可以创建本地和全局临时表。本地临时表只在当前会话中可见;全局临时表在所有会话中可见。
对本地临时表的名称有一个数(# table_name)之前的全局临时表的名称,和全局临时表的名称有两个编号的字符(# # table_name)。
使用的SQL语句创建表的语句引用临时表table_name指定的名称:
创建表# mytemptable(可乐主关键字)
插入# mytemptable值(1)
如果本地临时表的存储过程或由多个用户同时创建,SQL Server必须能够区分由不同用户创建的表。为此,SQL Server添加数字后缀到每个本地临时表的表名内。存储在tempdb数据库中的临时表表格是由在CREATE TABLE语句中指定的表名和系统生成的数字后缀。允许附加后缀,表名table_name指定的本地临时表不能超过116个字符。
除非使用下拉表语句显式删除临时表,否则临时表将在系统退出其范围时自动删除:
当存储过程完成时,自动删除存储过程中创建的本地临时表。存储过程创建的表所执行的所有嵌套存储过程都可以引用此表。但是调用创建表的存储过程的过程不能引用此表。
在当前会话结束时,所有其他本地临时表都会自动删除。
全局临时表是在会议结束时创建的表和其他任务自动停止当参考停止。任务和表之间的关联是只保存在一个单一的Transact-SQL语句的寿命。换句话说,当全局临时表的会话被创建,最后一个Transact-SQL语句引用的表完成,并表将被自动删除。
在存储过程或触发器创建本地临时表不同,相同的名称创建临时表,在存储过程或触发器调用。如果查询是指临时表,有相同名字的两个临时表,它是没有定义的表来解析查询,嵌套存储过程可以创建一个同名的临时表的存储过程的调用创建的临时表。所有引用嵌套存储表的名称被解释为嵌套的过程中创建的表,如:
复制代码代码如下所示:
创建程序test2
作为
创建表# T(x主关键字)
插入# T值(2)
选择test2col = x从# T

创建程序test1
作为
创建表# T(x主关键字)
插入# T值(1)
选择test1col = x从# T
exec test2

创建表# T(x主关键字)
插入# T值(99)

执行测试

下面是结果集:
(1行(s)受影响
test1col


(1行(s)受影响)
test2col


当创建一个局部或全局临时表,创建表的语法支持所有其他约束定义以外的外键约束。如果外键约束在临时表中指定的,该语句将返回警告信息,表明约束是不容忽视的,桌上仍将被创建,但它没有外键约束。临时表不能在外键约束引用。
考虑使用表变量而不使用临时表。当需要在临时表上显式地创建索引时,或当多个存储过程或函数需要使用表值时,临时表是有用的。通常,表变量提供更有效的查询处理
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部