データベース管理では、外部キーはテーブル間のデータをリンクすることによって参照整合性を強制します。デフォルトでは、ほとんどのデータベース システムは「ON DELETE CASCADE」動作で外部キーを設定します。これにより、親レコードが削除されると子レコードも削除されます。
ただし、この動作を「」に変更する必要があるシナリオもあります。削除制限中。」この変更により、親レコードに既存の子レコードがある場合、親レコードは削除されなくなります。
参照アクションを変更するには、まず既存の制約を削除する必要があります。次の構文を使用します。
ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
「table_name」を外部キーを含むテーブルの名前に置き換え、「constraint_name」を既存の制約の名前に置き換えます。
古い制約を削除したら、必要な参照を持つ新しい制約を追加できます。 アクション。次の構文を使用します。
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column) ON DELETE RESTRICT;
「table_name」を以前と同じテーブルに置き換え、「constraint_name」を新しい制約の名前に置き換え、「column_name」を外部キー列に置き換え、「referenced_table」を参照テーブルに置き換えます。 、および「referenced_column」は参照テーブル内の参照列です。
次のテーブル構造を検討します。
CREATE TABLE UserDetails ( Detail_id INT PRIMARY KEY, User_id INT NOT NULL, FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE );
参照アクションを「ON DELETE RESTRICT」に変更するには、次の手順に従います。
既存のものを削除します制約:
ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id;
新しい制約を追加します:
ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE RESTRICT;
これらの変更後、「Users」テーブルのレコードを削除します削除が「UserDetails」テーブルにカスケードされなくなります。 「Users」の親レコードを参照する「UserDetails」の既存の子レコードが存在する場合、削除は制限されます。
以上が外部キーの ON DELETE CASCADE を ON DELETE RESTRICT に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。