ホームページ > データベース > mysql チュートリアル > 外部キーの ON DELETE アクションを CASCADE から RESTRICT に変更するにはどうすればよいですか?

外部キーの ON DELETE アクションを CASCADE から RESTRICT に変更するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-01 00:59:11
オリジナル
853 人が閲覧しました

How to Change a Foreign Key's ON DELETE Action from CASCADE to RESTRICT?

外部キー参照アクションの変更

データベース設計では、外部キーはテーブル間の関係を確立してデータの整合性を維持するために重要です。外部キーを定義するときは、参照される親レコードが変更または削除されたときに子レコードに何が起こるかを制御する参照アクションを指定します。

一般的な参照アクションの 1 つは ON DELETE CASCADE です。これは、子レコードが変更または削除されたときに子レコードを自動的に削除します。親レコードが削除されます。この動作を ON DELETE RESTRICT に変更し、関連する子レコードを持つ親レコードが削除されないようにするには、次の手順を使用できます。

ステップ 1: 既存の外部キー制約を削除する

以下を実行します。既存の外部キー制約を削除する SQL コマンド:

ALTER TABLE `table_name` DROP FOREIGN KEY `constraint_name`;
ログイン後にコピー

ここで、table_name は外部キー列を含むテーブルです。

ステップ 2: ON DELETE RESTRICT を使用して新しい外部キー制約を追加する

次に、目的の ON DELETE RESTRICT 動作を使用して新しい外部キー制約を作成します。 :

ALTER TABLE `table_name` ADD CONSTRAINT `new_constraint_name` FOREIGN KEY (`foreign_key_column`) 
REFERENCES `referenced_table` (`referenced_column`) 
ON DELETE RESTRICT;
ログイン後にコピー

ここで、foreign_key_column は、参照している table_name 内の列です。 Referenced_table、referenced_table は参照される列を含むテーブル、referenced_column は外部キーによって参照される Referenced_table 内の列、new_constraint_name は新しい外部キー制約の名前です。

例:

別のテーブル Users を参照する外部キー User_id を持つテーブル UserDetails を考えてみましょう。参照アクションを ON DELETE CASCADE から ON DELETE RESTRICT に変更するには、次の手順に従います:

  1. 既存の外部キー制約を削除します:

    ALTER TABLE `UserDetails` DROP FOREIGN KEY `FK_User_id`;
    ログイン後にコピー
  2. ON DELETE を使用して新しい外部キー制約を追加しますRESTRICT:

    ALTER TABLE `UserDetails` ADD CONSTRAINT `FK_User_id` 
    FOREIGN KEY (`User_id`) 
    REFERENCES `Users` (`User_id`) 
    ON DELETE RESTRICT;
    ログイン後にコピー

これらの手順を実行すると、外部キーの参照アクションを変更して、必要なデータ整合性ルールがデータベースに確実に適用されるようにすることができます。

以上が外部キーの ON DELETE アクションを CASCADE から RESTRICT に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート