2016-08-11 3 views
-3

私のコードは次のようになります。複数の列を持つ制約をSQL Serverの主キーとして削除するにはどうすればよいですか?

CONSTRAINT user_password_username_password PRIMARY KEY (username, password) 

私は外部キーを更新し、もはや制約でパスワードを使用することができますので、この制約を削除する必要があります。他のテーブルにリンクされているため、単にテーブルを削除して再作成することもできません。この制約を解除すると、ユーザー名だけがプライマリキーを構成します。

+0

外部キーを更新したとしたら、このテーブルまたは他のテーブルで意味しますか?他のテーブルにリンクされていると言うと、他のテーブルがこのプライマリキーに依存しているということですか? – yelxe

+0

主キーを削除しますか?どのような制約が特にありますか? –

+0

データベース内のすべての外部キーを更新しました。他のテーブルはこの主キーに依存します。私はすべての外部キーを落としてしまいました。ありがとう! –

答えて

1
  1. user_password_username_password制約を参照するすべての外部キー制約を削除します。無効にすると動作しません。あなたはそれらを落とす必要があります。他のユニークキーを参照する外部キーをテーブルにドロップする必要があるかもしれませんが、それについてはわかりません。
  2. 表のuser_password_username_password制約を削除します。
  3. テーブルに新しい一意キー制約を作成します。
  4. 外部キー制約を作成または再作成します。

これはすべて単一のトランザクションで実行できますが、大きなテーブルの場合はシングルユーザーモードで実行することを検討します。主キーを削除して、表のすべての索引および制約に対して索引を再作成し、外部キーにいくつかの新しい索引/制約を作成してから、新しい主キーを作成してすべての索引および制約を強制します再構築するテーブルに。

+0

私はついに仕事になった、ありがとう! –

関連する問題