Verstehen Sie die anwendbaren Szenarien von ON UPDATE CASCADE
Obwohl ON DELETE CASCADE
häufig verwendet wird, sind die Anwendungsszenarien von ON UPDATE CASCADE
möglicherweise nicht intuitiv. In diesem Artikel werden Szenarien untersucht, in denen ON UPDATE CASCADE
von Vorteil sein kann, und einige häufig gestellte Fragen zu seiner Funktionalität beantwortet.
Szenarioanalyse
Betrachten Sie das folgende Beispiel:
<code class="language-sql">CREATE TABLE parent ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ); CREATE TABLE child ( id INT NOT NULL AUTO_INCREMENT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE );</code>
Frage 1: Auswirkungen von Update-Vorgängen
Tatsächlich wird, wenn der Primärschlüssel der „übergeordneten“ Tabelle geändert wird, ON UPDATE CASCADE
der Datensatz in der „untergeordneten“ Tabelle aktualisiert. Diese Funktion gilt jedoch nicht, wenn der Primärschlüssel nicht aktualisierbar ist (z. B. automatisch inkrementiert oder durch einen Zeitstempel festgelegt).
Frage 2: Andere Szenarien
Neben der Aktualisierung nicht aktualisierbarer Primärschlüssel eignet sich ON UPDATE CASCADE
auch für Szenarien, in denen die Primärschlüssel aktualisiert werden können. Wenn der Primärschlüssel beispielsweise ein UPC-Barcode ist und von 10 auf 13 Ziffern geändert werden muss, ON UPDATE CASCADE
stellen Sie sicher, dass Fremdschlüsselreferenzen in anderen Tabellen entsprechend geändert werden.
Problem 3: Ungültiges Update
Wenn ein Fremdschlüsselwert absichtlich in einen ungültigen Wert geändert wird, wird normalerweise ein Fremdschlüsseleinschränkungsfehler ausgelöst, wodurch die Integrität der Datenbank gewahrt bleibt.
Problem 4: Abhängigkeit vom Datenbankanbieter
Das Verhalten vonON UPDATE CASCADE
ist im Allgemeinen unabhängig vom Datenbankanbieter. Es handelt sich um eine Standardfunktion, die von den meisten relationalen Datenbankverwaltungssystemen unterstützt wird.
Das obige ist der detaillierte Inhalt vonWann sollten Sie „ON UPDATE CASCADE' in SQL verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!