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.
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.
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.
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:
Löschen Sie das Vorhandene Einschränkung:
ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id;
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!