0

我想向现有表添加主键。我认为最好的方法是做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 中实现。

4

3 回答 3

2

您不必重新创建表。使用这个脚本:

ALTER TABLE dbo.YourTable ADD PRIMARY KEY (KeyColumn1,KeyColumn2);
于 2013-01-10T21:10:32.657 回答
1
  1. 根据需要创建新表。
  2. 插入新表。
  3. 放下旧桌子。
  4. 重命名新的。
于 2013-01-10T21:08:42.997 回答
0

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

所以只需执行以下操作:

alter table dbo.OldTable add constraint PK_OldTable primary key (xxx)
于 2013-01-10T21:15:04.727 回答