Ist es möglich, drop foreign key-Einschränkungen für eine Tabelle auf einmal in mySQL 5?
In mySQL 5, gibt es eine Möglichkeit, drop foreign key-Einschränkungen eine Tabelle mit einer SQL-Anweisung ohne auf diese Namen?
Schreibe ich ein DB-update-Skript, und leider auch einige der Seiten hatte constraints erstellt mit "falschen" Namen. Ich versuche zu vermeiden, gehen in und die eigentliche constraint-Namen aus der DB und einfügen von Ihnen zurück in SQL-Anweisungen.
InformationsquelleAutor der Frage Alexei | 2009-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie sicher wählen Sie * aus der Tabelle in eine temporäre Tabelle löschen und neu erstellen, dann zurück kopieren.
InformationsquelleAutor der Antwort Zed
Ich habe eine Lösung ähnlich wie Bing die Antwort, aber es dauert noch einen Schritt weiter, um die automatische und wiederverwendbar in einem Verfahren.
Seit einer vorbereiteten Anweisung kann nur eine Anweisung zu einer Zeit, die Prozedur in einer Schleife durch die Fremdschlüssel mit einem cursor und führt die einzelnen Tropfen zu einem Zeitpunkt.
Die Prozedur verwenden, die auf einem der Tische verwenden Sie einfach die folgende, ersetzen, table_schema und table_name mit den Werten:
InformationsquelleAutor der Antwort Dandalf
Hier ist ein auswählen, erstellt komplette drop-und create-Anweisungen für alle Beziehungen auf einem Tisch. Nicht automatisch, aber in keiner Weise leicht genug, um kopieren/einfügen aus..
Habe ich es fallen alle Beziehungen, ändern von Datentypen, die auf den Tasten und dann die Wiederherstellung der Beziehungen mit ausländischen Namen á la MySQL Workbench. Könnte hilfreich sein, jemand..
InformationsquelleAutor der Antwort Bing
In Ihrem Skript können Sie immer hinzufügen SET FOREIGN_KEY_CHECKS=0, wenn Sie wollen einfach nur, um rund um den Zwängen.
Außerdem habe ich immer gelöscht Einschränkungen auf eine pro basis-Einschränkung der Verwendung:
Ich glaube nicht, dass Sie tun können, Sie alle auf einmal und ich konnte nicht finden alle Beispiele, die Ihnen zeigen können.
InformationsquelleAutor der Antwort northpole
Können Sie mit dieser einfachen bash-Skript:
Run:
und deleteForeignKeys.sh ist
InformationsquelleAutor der Antwort metdos