删除并重新创建SQL Server临时表上的主键

时间:2014-10-25 23:33:09

标签: sql-server primary-key temp-tables alter-table

我需要删除并重建SQL Server中临时表中的主键。最常见的解决方案要求您输入PK索引的名称。但是,由于这是在存储过程中,这样做会限制此sp的任何并行使用。

CREATE TABLE #mytable (Date_ DATETIME NOT NULL, Name_ CHAR(50) NOT NULL, VALUE_ INT )
ALTER TABLE #mytable ADD PRIMARY KEY CLUSTERED (Date_, Name_)

现在我需要删除这个主键,并在Name_列上创建一个新主键。

例如,

ALTER TABLE #mytable DROP OLD PK
ALTER TABLE #mytable ADD PRIMARY KEY CLUSTERED (Name_)

1 个答案:

答案 0 :(得分:1)

动态SQL和NEWID()将为您提供一个唯一的标识符,您可以将其附加到PK的名称。

DECLARE @GUID VARCHAR(50)

SELECT @GUID = REPLACE(NEWID(), '-', '')

PRINT @GUID


CREATE TABLE #mytable (Date_ DATETIME NOT NULL, Name_ CHAR(50) NOT NULL, VALUE_ INT )
EXEC('ALTER TABLE #mytable ADD CONSTRAINT PK_'+@GUID+' PRIMARY KEY CLUSTERED (Date_, Name_)')


EXEC('ALTER TABLE #mytable DROP CONSTRAINT PK_'+@GUID)
ALTER TABLE #mytable ADD PRIMARY KEY CLUSTERED (Name_)

DROP TABLE #MyTable