Referenzaktion für Fremdschlüssel ändern
Fremdschlüsseleinschränkungen erzwingen die Datenintegrität, indem sie Beziehungen zwischen Tabellen herstellen. Ein häufiges Szenario ist die Verwaltung des Verhaltens beim Löschen eines referenzierten Datensatzes. In diesem Artikel wird erläutert, wie Sie die Referenzaktion ändern, insbesondere von ON DELETE CASCADE zu ON DELETE RESTRICT.
ON DELETE CASCADE vs. ON DELETE RESTRICT
ON DELETE CASCADE: Wenn ein übergeordneter Datensatz gelöscht wird, werden alle entsprechenden untergeordneten Datensätze automatisch gelöscht. Dieses Verhalten kann zu unbeabsichtigtem Datenverlust führen.
ON DELETE RESTRICT: Verhindert das Löschen eines übergeordneten Datensatzes, wenn dieser über untergeordnete Datensätze verfügt. Dadurch wird sichergestellt, dass die Datenintegrität gewahrt bleibt.
SQL-Befehl zum Ändern der referenziellen Aktion
Der folgende SQL-Befehl ändert die referenzielle Aktion für eine Fremdschlüsselspalte:
ALTER TABLE <table_name> ADD CONSTRAINT <constraint_name> FOREIGN KEY (<column_name>) REFERENCES <referenced_table_name> ON DELETE <referential_action>
In Ihrem Fall lautet der Tabellenname „table1“, der Einschränkungsname „fk_table2_id“ und der Spaltenname „fk_table2_id“, der referenzierte_Tabellenname ist „table2“ und die referential_action ist „RESTRICT“.
Beispiel
Angenommen, Sie haben zwei Tabellen, „table1“ und „table2“. ":
CREATE TABLE table1 ( id INT NOT NULL, fk_table2_id INT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (fk_table2_id) REFERENCES table2(id) ON DELETE CASCADE ); CREATE TABLE table2 ( id INT NOT NULL, PRIMARY KEY (id) );
So ändern Sie die Fremdschlüsseleinschränkung in „table1“ auf ON DELETE RESTRICT, führen Sie den folgenden Befehl aus:
ALTER TABLE table1 ADD CONSTRAINT fk_table2_id FOREIGN KEY (fk_table2_id) REFERENCES table2(id) ON DELETE RESTRICT;
Dadurch wird das Löschen von Datensätzen aus „Tabelle2“ verhindert, wenn in „Tabelle1“ noch untergeordnete Datensätze vorhanden sind, die darauf verweisen.
Das obige ist der detaillierte Inhalt vonWie ändere ich die referenzielle Aktion eines Fremdschlüssels von ON DELETE CASCADE in ON DELETE RESTRICT?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!