Das Löschen einer Tabelle kommt nicht sehr häufig vor. Insbesondere bei Tabellen mit Fremdschlüsselassoziationen müssen Sie beim Löschen vorsichtiger sein. Während des Entwicklungsprozesses kommt es jedoch häufig vor, dass Probleme mit dem Schemaentwurf festgestellt werden und alle Tabellen in der vorhandenen Datenbank gelöscht und neu erstellt werden müssen. Darüber hinaus ist es während des Tests auch erforderlich, alle Tabellen in der Datenbank neu zu erstellen. Natürlich können das auch viele automatisierte Tools. Beim Löschen einer Tabelle wird möglicherweise eine Fehlermeldung wie diese angezeigt: FEHLER 1217 (23000): Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl Dies liegt daran, dass die Felder in der Tabelle, die Sie löschen möchten, als Fremdschlüssel in anderen Tabellen verwendet werden. Daher müssen Sie die Tabelle mit dem Fremdschlüssel (untergeordnete Tabelle) löschen, bevor Sie diese Tabelle (übergeordnete Tabelle) löschen. Das heißt, der Vorgang zum Löschen einer Tabelle muss mit dem Vorgang zum Erstellen einer Tabelle konsistent sein. Dies ist jedoch häufig nicht akzeptabel. Einerseits ist eine manuelle Sortierung bei zu vielen Tabellen nicht akzeptabel. Andererseits gibt es derzeit kein automatisches Tool zum Sortieren (tatsächlich ist dies nicht unmöglich). Aus diesem Grund stellt MySQL die Variable FOREIGN_KEY_CHECKS bereit, um festzulegen, ob bei Bedarf Fremdschlüsseleinschränkungen überprüft werden sollen. Generell wird folgendes empfohlen: Generieren Sie zunächst automatisch alle DROP-Anweisungen und ersetzen Sie MyDatabaseName durch Ihren Datenbanknamen: SELECT concat('Tabelle löschen, wenn vorhanden', Tabellenname, ';') VON information_schema.tables WHERE table_schema = 'MeinDatenbankname'; Fügen Sie dann die folgenden Anweisungen hinzu, um die Variable FOREIGN_KEY_CHECKS vor und nach dem generierten Code festzulegen: SETZEN SIE FOREIGN_KEY_CHECKS = 0 -- DROP-Anweisung SET FOREIGN_KEY_CHECKS = 1; Wenn Sie jedoch den letzten Satz vergessen, spielt das keine große Rolle. Diese Variable basiert auf der Sitzung. Das heißt, wenn Sie den Client schließen und erneut verbinden, wird diese Variable auf den Standardwert zurückgesetzt. Wenn Sie Fremdschlüsseleinschränkungen nicht global prüfen müssen (diese Situation ist relativ selten), können Sie Folgendes tun: Setzen Sie GLOBAL FOREIGN_KEY_CHECKS = 0; oder setze @@global.FOREIGN_KEY_CHECKS = 0; Die obige einfache Implementierung zum Ignorieren von Fremdschlüsseleinschränkungen beim Löschen von MySQL-Tabellen ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: Super detaillierte Schritte zur Installation von Zabbix3.0 auf Centos7
>>: js implementiert eine auf Canvas basierende Uhrkomponente
Inhaltsverzeichnis Werkzeug Installieren Sie das ...
Inhaltsverzeichnis 1. Die Rolle des Index 2. Erst...
Inhaltsverzeichnis Szeneneinführung Plugin-Implem...
Im Forum habe ich gesehen, dass der Internetnutzer...
Dieser Artikel beschreibt die Mysql-Self-Join-Abf...
In diesem Artikel wird der spezifische Code von V...
Verwenden Sie auto.js, um den täglichen Check-in ...
Closures sind eines der traditionellen Features r...
Hintergrund Alles begann, als ein Klassenkamerad ...
In MySQL werden die meisten Indizes (wie PRIMARY ...
Viele Freunde haben in Foren und Nachrichtenberei...
Nehmen Sie als Beispiel drei aufeinanderfolgende ...
Überblick Das Prototypmuster bezieht sich auf den...
Das Computersystem wurde neu installiert und die ...