美文网首页SQL server
SQL server 中表名前面的井号(#)

SQL server 中表名前面的井号(#)

作者: 赵研宇 | 来源:发表于2020-02-06 14:38 被阅读0次

表名前加#表示这是一个临时表

例如在存储过程中声明一个临时表

CREATE TABLE  #temp
(
 ID varchar(50)
,NAME varchar(50)
)

或者

SELECT * INTO #table   FROM user

这二种都是创建临时表

本地临时表VS全局临时表

临时表

SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。

临时表有两种类型:

本地临时表

以一个井号 (#) 开头的那些表名。
只有在创建本地临时表的连接上才能看到这些表。

全局临时表

以两个井号 (##) 开头的那些表名。
在所有连接上都能看到全局临时表。
如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即 被除去。
当创建全局临时表的连接断开后,新的任务不能再引用它们。
当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表 的连接断开,全局临时表即被除去。

临时表其实是放在数据库tempdb里的一个用户表

分两种:
一种是以#(局部)或##(全局)开头的表,这种表在会话期间存,会话结束则自动删除;
另一种,如果创建时不以#或##开头,而用tempdb.TempTable来命名它,则该表可在数据库重启前一直存在.

以上两种都可手动用

DROP TABLE TempTableName

来删除.

相关文章

网友评论

    本文标题:SQL server 中表名前面的井号(#)

    本文链接:https://www.haomeiwen.com/subject/aqxuxhtx.html