11

元の設計では、テーブルの外部キー制約を台無しにしました。テーブルがデータでいっぱいになったので、テーブル内のすべてのレコードを削除せずにテーブルを変更することはできません。私が考えることができる唯一の解決策は、バックアップテーブルを作成し、そこにすべてのレコードを配置してから、すべてのレコードを削除し、テーブルを変更して、それらを追加し直すことです。他の(より良い)アイデアはありますか?ありがとう!

MSSQLServerの使用

4

4 に答える 4

9

これがいくつかの擬似コードです。バックアップテーブルを作成する必要はありません。適切な制約を使用して新しいテーブルを作成し、そのテーブルにレコードを挿入して、名前を変更するだけです。

CREATE TABLE MyTable_2
(...field definitions)

<add the constraint to MyTable_2>

INSERT INTO MyTable_2 (fields)
SELECT fields
FROM MyTable

DROP TABLE MyTable

exec sp_rename 'MyTable2', 'Mytable'
于 2011-05-17T15:44:56.760 に答える
3

これが唯一の解決策です。

バックアップ テーブルを作成し、元のテーブルを空にし、テーブルを変更してから、違反が見つかるまで段階的に挿入します。

于 2011-05-17T15:29:40.720 に答える
3

SQL Server Management Studio (SSMS) を使用すると、そのテーブル デザイナーを使用して、テーブルの最終的な条件を指定できます。変更を保存する前に、変更スクリプトを生成し、そのスクリプトを保存します。デザイン ウィンドウをキャンセルし、スクリプトを開いて確認します。SSMS は、必要なすべてを実行するスクリプトを既に生成している可能性があり、既存のすべてのデータを保持しながら、主キーと外部キーの関係を修正します。そうでない場合は、スクリプトがすでに開始されており、必要なことのほとんどを実行し、必要に応じて変更できるはずです。

于 2013-08-10T17:13:19.197 に答える