web-dev-qa-db-ja.com

CASCADE DELETEを有効にするためにテーブルを編集するにはどうすればよいですか?

ユーザーを表すテーブルがあります。ユーザーが削除されると、次のようになります。

DELETEステートメントがREFERENCE制約と競合しています

どうやら、CASCADE DELETEはSQL Serverで想像したほど簡単ではなく、オプションをテーブルに追加する必要があります。

問題は、CASCADE DELETEオプションを追加する方法がわからないことです。

私は使用しています:SQL Server 2008。これを行う方法はありますか?

25
RadiantHex

最初にこのマイクロソフトの記事を読んでください。 お読みください 。私は設計時にGUIを使用するので、これはSSMSでのGUIの選択方法の図です。 alt text 外部キーに追加された構文は "ON DELETE CASCADE"です。

28
RC_Cleland

Google ALTER TABLE DROP CONSTRAINT、次にALTER TABLE ADD CONSTRAINT

ALTER TABLE

ここに簡単な例があります:

CREATE TABLE A 
(
 ID INTEGER NOT NULL UNIQUE
);

CREATE TABLE B 
(
 ID INTEGER NOT NULL UNIQUE
    CONSTRAINT fk__B__A 
       REFERENCES A (ID)
);

-- Oops! Forgot the CASCADE referential actions.
-- DROP the constraint then recreate it:

ALTER TABLE B DROP
   CONSTRAINT fk__B__A;

ALTER TABLE B ADD
   CONSTRAINT fk__B__A
      FOREIGN KEY (ID)
      REFERENCES A (ID)
      ON DELETE CASCADE
      ON UPDATE CASCADE;
17
Mr. TA

これは、既存のSQL Server Management Studio

まず、外部キーを見つけて、それを「DROP and CREATE To」として新しいクエリウィンドウで開きます。

Drop and Create

次に、「ON DELETE CASCADE "から" ADD CONSTRAINT "コマンド:

On delete cascade

次に、[実行]ボタンをクリックしてクエリを実行します。

仕事完了!

15
Mike Gledhill