0

既存のテーブルに主キーを追加したかった。これを行う最善の方法はSELECT INTO、一時テーブルに a を実行し、テーブルを削除して作成し、次に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 に答える