添加主键后如何重建表?

时间:2013-01-10 21:05:55

标签: sql sql-server-2008 foreign-keys primary-key rdbms

我想在现有表中添加主键。我认为最好的方法是在临时表中执行SELECT INTO,删除并创建表,然后从临时表中INSERT INTO创建的表。这有什么问题吗?

这是最佳做法吗?

SET XACT_ABORT ON

--SAVE DATA
SELECT * INTO #TempTable
FROM dbo.OldTable AS tt

-- Drop and Create dbo.OldTable

-- Restore data
INSERT INTO dbo.OldTable (Column1, Column2, Column3)
SELECT
    tt.Column1,
    tt.Column2,
    tt.Column3
FROM #TempTable AS tt

COMMIT TRANSACTION -- roll back in case there are any FK issues

此数据库在SQL Server 2008中实现。

3 个答案:

答案 0 :(得分:2)

您不必重新创建表格。使用此脚本:

ALTER TABLE dbo.YourTable ADD PRIMARY KEY (KeyColumn1,KeyColumn2);

答案 1 :(得分:1)

  1. 根据需要创建新表。
  2. 插入新表格。
  3. 放下旧桌子。
  4. 重新命名。

答案 2 :(得分:0)

最好的方法是在现场添加PK,因为这样可以节省处理时间和使用的日志空间。

所以,请执行以下操作:

alter table dbo.OldTable add constraint PK_OldTable primary key (xxx)