Heim  >  Artikel  >  Datenbank  >  Was sind CASCADE, NO ACTION, RESTRICT und SET NULL in den MySQL-Fremdschlüsseleinstellungen?

Was sind CASCADE, NO ACTION, RESTRICT und SET NULL in den MySQL-Fremdschlüsseleinstellungen?

王林
王林nach vorne
2023-05-27 17:19:133015Durchsuche

Als ich heute Navicat für MySQL zum Entwerfen der Tabelle verwendet habe, standen beim Festlegen des Fremdschlüssels beim Löschen und Aktualisieren in den beiden Spalten vier Werte zur Auswahl: CASCADE, NO ACTION, RESTRICT und SET NULL. Ich habe sie alle selbst ausprobiert, ihre Unterschiede sind wie folgt:

  • CASCADE: Wenn die übergeordnete Tabelle gelöscht und aktualisiert wird, löscht und aktualisiert die untergeordnete Tabelle die zugehörigen Datensätze;

  • SET NULL: Wenn die übergeordnete Tabelle löscht und Aktualisierungen, die untergeordnete Tabelle löscht und aktualisiert die zugehörigen Datensätze. Die Spalte des Fremdschlüsselfelds des Datensatzes ist auf Null gesetzt. Beachten Sie daher, dass der Fremdschlüssel beim Entwerfen der untergeordneten Tabelle nicht auf nicht null gesetzt werden kann Sind Datensätze mit der übergeordneten Tabelle in der untergeordneten Tabelle verknüpft, verhindert RESTRICT (Einschränkung) das Löschen von Datensätzen der übergeordneten Tabelle , KEINE AKTION

  • Löschen: Die Haupttabelle kann nur gelöscht werden, wenn die Datensätze aus der Slave-Tabelle nicht vorhanden sind. Löschen Sie die Slave-Tabelle und lassen Sie die Master-Tabelle unverändert.
  • Update: Wenn der Slave-Tabellendatensatz nicht vorhanden ist, kann das Haupttabellenmenü aktualisiert werden. Wenn die Slave-Tabelle aktualisiert wird, bleibt die Haupttabelle unverändert.

  • CASCADE

    Löschen: Die Slave-Tabelle automatisch löschen, wenn die Master-Tabelle gelöscht wird. Löschen Sie die Slave-Tabelle und lassen Sie die Master-Tabelle unverändert.
  • Aktualisieren: Aktualisieren Sie die Slave-Tabelle automatisch, wenn Sie die Master-Tabelle aktualisieren. Aktualisieren Sie die Slave-Tabelle und lassen Sie die Master-Tabelle unverändert.
SET NULLLöschen: Beim Löschen der Master-Tabelle wird die Slave-Tabelle automatisch auf NULL aktualisiert, die Slave-Tabelle gelöscht und die Master-Tabelle bleibt unverändert. (2) In der Datenbank-Buchhandlung habe ich wie folgt eine neue Tabelle b erstellt:
Aktualisieren: Aktualisieren Sie den Slave-Tabellenwert automatisch auf NULL, wenn Sie die Master-Tabelle aktualisieren. Aktualisieren Sie die Slave-Tabelle und lassen Sie die Master-Tabelle unverändert.
Hier ein kleines Beispiel zum besseren Verständnis: (1) Im Datenbank-Bookshop habe ich eine neue Tabelle a wie folgt erstellt:
Fremdschlüssel festlegen:

(3) Fügen Sie Datensätze wie folgt in die Tabellen a und b ein:

Was sind CASCADE, NO ACTION, RESTRICT und SET NULL in den MySQL-Fremdschlüsseleinstellungen?

Was sind CASCADE, NO ACTION, RESTRICT und SET NULL in den MySQL-Fremdschlüsseleinstellungen?Hier: Das Feld id2 der Tabelle a ist ein Fremdwort Schlüsselfeld, beziehen Sie sich auf den Primärschlüssel von Tabelle B, sodass Tabelle B die übergeordnete Tabelle und Tabelle A die untergeordnete Tabelle ist. Wenn Sie dann die Fremdschlüssel von Tabelle A festlegen, können Sie die von mir erwähnte Schlussfolgerung ziehen über.

Das obige ist der detaillierte Inhalt vonWas sind CASCADE, NO ACTION, RESTRICT und SET NULL in den MySQL-Fremdschlüsseleinstellungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen