我想知道,在 TempDB 的表格部分中创建表格是否与创建哈希表不同。
在Temp DB中创建表
USE [tempdb]
GO
/****** Object: Table [dbo].[abc] Script Date: 2/14/2017 4:04:31 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[abc](
[id] [int] NULL,
[name] [nchar](10) NULL
) ON [PRIMARY]
GO
创建哈希表
CREATE TABLE #abcd(
id INT,
name varchar(10)
)
INSERT INTO #abcd VALUES (1,'22')
临时数据库和哈希表中的这些表是否相同? 我的意思是这个普通表的行为就像一个临时表,因为它是在temp DB ??
中创建的答案 0 :(得分:2)
在TempDB的表部分中创建表是否与创建哈希表不同。临时数据库和哈希表中的这些表是否相同?
dbo.temp
中的 TempDB
将持续到系统重新启动。在重新启动后(使用模型数据库作为模板),将从头开始重新创建Tempdb
#temp
仅会在该会话中保留
还有一些差异,适用于#temp,你不能创建
1.triggers
2.外键
总之,TempDB中的dbo.temp就像普通表
一样答案 1 :(得分:1)
您不需要这样做:
USE [tempdb]
这不是它的工作方式。如果没有上述行,在第二个查询中执行您正在执行的操作将自动使用tempdb
:
-- this creates a temp table in tempdb for you
CREATE TABLE #abcd(
id INT,
name varchar(10)
)
您不必指定。第一个查询不正确。你不应该专门写信给tempdb
,SQL服务器管理那里的表的创建和整理,所以你不必这样做。
如果您有一个打开的查询,那么在您完成此操作时,这是一个很好的做法:
DROP TABLE #abcd
否则临时表将持续存在。如果它在存储过程中创建,一旦超出范围,临时表将为您清理。