简单复制:
SELECT ProductID
INTO #
FROM dbo.Products;
SELECT *
FROM #;
IF OBJECT_ID('tempdb..#') IS NOT NULL
PRINT 'Wow';
执行得很好,结果我得到 哇 。
为什么/怎么可能?
你不能拥有没有名字的真实表,为什么临时表可以是无名的?
答案 0 :(得分:4)
您的临时表不是无名的。它的名字是'#'。
本地临时表
本地临时表仅可供用户的当前连接使用;当用户与实例断开连接时,它们会自动删除。本地临时表名称以哈希(“#”)符号开始。
简而言之,文档说它必须以哈希开头。但没有其他限制(即长度)。
同样适用于以两个哈希字符开头的全局临时表。
此处有更多信息:http://www.codeproject.com/Articles/42553/Quick-Overview-Temporary-Tables-in-SQL-Server-2005
答案 1 :(得分:2)
如果你转到
数据库 - > Tempdb->临时表 - >
您可以找到#
表附加了当前session id
。
类似
[dbo].#__________0000000894D9]
即使你创建一个名为temp table
的{{1}},为了区分每个会话中的临时表,sql server 追加 #
到临时表你创建的表。所以在内部它不会像session id