Unterschied zwischen cascade und restrict? SQL-DDL Datenbank
Könnte mir jemand sagen, was genau cascade und restrict bedeuten?
Es ist in der Datenbank-Systeme unterliegen der DDL-Teil
und was, wenn ich kein schreiben von Ihnen in meinem delete-Anweisung?
können Sie akzeptieren meine Antwort?
InformationsquelleAutor user3102872 | 2013-12-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
ON DELETE CASCADE und ON DELETE RESTRICT die foreign key-Eigenschaft und setzen Sie Sie beim erstellen der Beziehung zwischen zwei Tabellen.
Wenn Sie das Verhältnis Schiff zu sein, ON DELETE CASCADE, der beim ausführen einer DELETE-Anweisung auf eine parent-Tabelle, LÖSCHEN alle entsprechenden Zeilen aus der UNTERGEORDNETEN Tabelle automatisch. Aber die BESCHRÄNKEN (das ist die default-Fremdschlüssel-Beziehung, Verhalten) ist, wenn Sie versuchen, löschen Sie eine Zeile aus der übergeordneten Tabelle, und es gibt eine Zeile in der child-Tabelle mit der gleichen ID, wird es scheitern, beschweren sich über die vorhandenen untergeordneten Zeilen.
Entweder Weg, Sie brauchen nicht zu erwähnen, was in der DELETE-Klausel.
Ich schrieb auch einen blog-post über die verschiedenen Regeln für Delete-und Update-Befehle im detail hier:
https://koukia.ca/sql-server-foreign-key-update-and-delete-rules-556cf09117fe
wenn es gesetzt ist, zu BESCHRÄNKEN, zu keiner der Reihen(Elternteil oder Kind) werden gelöscht und du wirst sehen und Fehler. wenn Sie möchten, dass die übergeordnete Zeile gelöscht werden, unabhängig von der Existenz des Kindes Zeilen, die Sie verwenden sollten, KEINE AKTION.
So, Cascade bedeutet, dass, wenn ich lösche die Eltern das Kind bekommen, werden auch gelöscht. Einschränken gibt mir eine Fehlermeldung, wenn ich versuche zu löschen. Keine Aktion nicht ändern, was in dem Kind an, wenn ich löschen den Eltern. Set default setzt das Kind auf den default-Wert beim löschen des übergeordneten Elements. null setzt das Kind auf null, wenn die Eltern gelöscht. bin ich im Recht? Ich danke Ihnen sehr
gut, ich habe gerade nachgeschaut, sieht aus wie NO ACTION und RESTRICT sind die gleiche Sache, und über den rest, du hast es Recht.
ON DELETE NO ACTION
(das ist ein Synonym für dieON DELETE RESTRICT
auf einige RDBMSes) ist die Standard-Aktion, so dass es nicht notwendig, dass zu schreiben. Sie können immer noch löschen Sie die Kinder natürlich, Sie müssen es nur tun, die explizit mit einem extraDELETE FROM child_table
vorDELETE FROM parent_table
, die ich denke, ist der beste Weg.InformationsquelleAutor Aram
Gibt es drei Arten von on delete Zusammenhang mit der foreign key -
InformationsquelleAutor Aditya Parmar
Rechts, so dass diese ON DELETE und ON UPDATE anwenden, um die parent-Tabelle/Zeile. Der Grund NO ACTION und RESTRICT sind die gleiche Sache ist, weil Sie nicht haben, eine Beziehung mit einem Kind und einem Elternteil, wenn die Eltern nicht vorhanden sind.
InformationsquelleAutor elifares