6

私のデータベースには、何千ものレコードを持つテーブルがあります。主キーは整数です。この列には多くの外部キー制約が関連付けられています。

この列を ID キーに変更したいと考えています。それを行う最良の方法は何ですか?また、この更新プログラムをクライアントのインストールに送信する必要があります。

Sql Server 2000 で機能する回答に対するボーナス ポイント。

4

4 に答える 4

17

SQL Server Management Studioには、1日を節約できる優れた機能があります。

SSMSで、[オプション]->[デザイナ]->[テーブルおよびデータベースデザイナ]に移動し、[変更スクリプトの自動生成]をオンにして、[テーブルの再作成が必要な変更の保存を防止する]をオフにします。

オブジェクトエクスプローラーで、テーブルに移動し、ID仕様を取得する列を選択します。右クリックして[変更]を選択します。[列のプロパティ]パネルで、ツリー[IDの仕様]を展開し、[(Is Identity)]を[はい]に変更します。次に、左上のサイズで、「スクリプトの生成」アイコンを選択します。警告メッセージに注意してください。

これで、すべての制約を削除し、IDを使用してテーブルを再作成し、制約を再作成するスクリプトが生成されます。おお!

私はそれをテストし、ここに私の結果を投稿します。

更新:すべてが正常に機能しました。クライアントのインストールで変更を再現するためのスクリプトが必要だという質問で言うのを忘れました。

于 2009-06-24T00:04:36.277 に答える
1

既存の列をID列に変更するための単一の「ALTERTABLE」DDLはありません。新しいID列は既存のテーブルにのみ追加できます。

これはEnterpriseManagerで実行できますが、SQLサーバーが新しいテーブルを作成し、バックグラウンドでデータをコピーしていることに注意する必要があります。これに関していくつかの問題があるかもしれません。これをもう少し説明する記事がありますhttp://www.mssqltips.com/tip.asp?tip=1397

あなたのシナリオでは、このスクリプトと、fkを無効にしてから再度有効にするための何かの組み合わせが必要になると思います。

于 2009-06-24T00:00:21.857 に答える
0

列が既存の関係の一部として整数である場合、列は既に一意です。したがって、重複を心配する必要はありません。それはすでに回避された1つの大きな面倒です。

ALTER TABLE コマンドを発行して列を変更するか、Enterprise Manager を使用して変更できます。

于 2009-06-23T23:29:29.033 に答える