Heim >Datenbank >MySQL-Tutorial >Wie ändere ich ON DELETE CASCADE in ON DELETE RESTRICT für Fremdschlüssel?

Wie ändere ich ON DELETE CASCADE in ON DELETE RESTRICT für Fremdschlüssel?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-29 18:18:16675Durchsuche

How to Change ON DELETE CASCADE to ON DELETE RESTRICT for Foreign Keys?

Ändern der referenziellen Aktion für Fremdschlüssel: Eine Schritt-für-Schritt-Anleitung

Bei der Datenbankverwaltung erzwingen Fremdschlüssel die referenzielle Integrität, indem sie Daten zwischen Tabellen verknüpfen. Standardmäßig richten die meisten Datenbanksysteme Fremdschlüssel mit dem Verhalten „ON DELETE CASCADE“ ein, das untergeordnete Datensätze löscht, wenn ihre übergeordneten Datensätze gelöscht werden.

Es gibt jedoch Szenarien, in denen Sie dieses Verhalten möglicherweise auf „ändern möchten“. BEI LÖSCHEN EINSCHRÄNKEN.“ Diese Änderung verhindert das Löschen von übergeordneten Datensätzen, wenn diese über vorhandene untergeordnete Datensätze verfügen.

Schritt 1: Löschen der alten Einschränkung

Um die Referenzaktion zu ändern, müssen Sie zunächst die vorhandene Einschränkung löschen. Verwenden Sie die folgende Syntax:

ALTER TABLE table_name DROP FOREIGN KEY constraint_name;

Ersetzen Sie „table_name“ durch den Namen der Tabelle, die den Fremdschlüssel enthält, und „constraint_name“ durch den Namen der vorhandenen Einschränkung.

Schritt 2: Hinzufügen des Neuen Einschränkung

Sobald die alte Einschränkung gelöscht wurde, können Sie eine neue mit der gewünschten referenziellen Aktion hinzufügen. Verwenden Sie die folgende Syntax:

ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column) ON DELETE RESTRICT;

Ersetzen Sie „table_name“ durch dieselbe Tabelle wie zuvor, „constraint_name“ durch den Namen der neuen Einschränkung, „column_name“ durch die Fremdschlüsselspalte, „referenced_table“ durch die referenzierte Tabelle und „referenced_column“ mit der referenzierten Spalte in der referenzierten Tabelle.

Beispiel: Ändern von ON DELETE CASCADE zu ON DELETE RESTRICT

Beachten Sie die folgende Tabellenstruktur:

CREATE TABLE UserDetails (
  Detail_id INT PRIMARY KEY,
  User_id INT NOT NULL,
  FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE
);

Um die Referenzaktion in „ON DELETE RESTRICT“ zu ändern, führen Sie die folgenden Schritte aus:

  1. Löschen Sie das Vorhandene Einschränkung:

    ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id;
  2. Fügen Sie die neue Einschränkung hinzu:

    ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE RESTRICT;

Nach diesen Änderungen wird ein Datensatz in der Tabelle „Benutzer“ gelöscht Der Löschvorgang wird nicht mehr auf die Tabelle „UserDetails“ übertragen. Das Löschen wird eingeschränkt, wenn in „UserDetails“ untergeordnete Datensätze vorhanden sind, die auf den übergeordneten Datensatz in „Users“ verweisen.

Das obige ist der detaillierte Inhalt vonWie ändere ich ON DELETE CASCADE in ON DELETE RESTRICT für Fremdschlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn