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
Priorität Der Grund, warum das Platzieren derselb...
1. Szenariodarstellung Das Tomcat-Protokoll melde...
Vorwort Zu den logischen Urteilsaussagen, die wir...
Inhaltsverzeichnis Fallbeispiel Lösung des Proble...
1. Verwenden Sie Docker Compose, um den Start zu ...
CSS3 implementiert einen umdrehbaren Hover-Effekt...
Dieser Artikel beschreibt die Benutzer- und Rolle...
HTML-Tags zur Textformatierung 標簽 描述 <b> 定義...
Vorwort Nach einem Failover sind Synchronisierung...
Entwicklungshintergrund: Ich arbeite derzeit an e...
Herunterladen https://tomcat.apache.org/download-...
1. Prozentuale Basis für Elementbreite/-höhe/-pol...
Die Hauptunterschiede sind folgende: 1. MySQL ver...
Code kopieren Der Code lautet wie folgt: <Körp...
1. Erstellen Sie zuerst die Datei (wechseln Sie p...