我习惯于看到只用哈希/数字符号创建的临时表,如下所示:
CREATE TABLE #Test
(
[Id] INT
)
但是,我最近遇到了存储过程代码,它在创建临时表时指定了模式名称,例如:
CREATE TABLE [dbo].[#Test]
(
[Id] INT
)
你有什么理由想要这样做吗?如果您只是指定用户的默认架构,它会有什么不同吗?这是指本地数据库中的[dbo]
模式还是tempdb数据库?
答案 0 :(得分:10)
如果 指定用户默认架构,那将没有任何区别,但如果用户默认架构更改,那么它将尝试将临时表保留在dbo架构中。
临时表是在tempdb中创建的,这意味着您需要在tempdb中维护架构,并且没有任何好处。