[MySQL] Tabelle mit foreignkeys austauschen

Tommy57

Erfahrenes Mitglied
Hallo,

ich möchte eine bestehende Tabelle komplett umbauen. Am liebsten wäre es mir, sie zu löschen und neu zu erstellen. Leider ist diese Tabelle mit der Datenbank über foreignkeys vernetzt.

1. Kann ich irgendwie schnell und einfach heraus finden, von wo überall foreignkeys auf die Tabelle zeigen
2. Kann ich ohne Bedenken eine Tabelle löschen, wenn ich Fremdschlüsselüberprüfung deaktiviere. Oder löst es trotzdem irgendwann das kaskadierte Löschen aus?

Gruß, Tommy
 
Okay, so finde ich heraus, wie man alle foreign keys zu ner Tabelle sehen kann.

Code:
SELECT
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = '<database>' AND
  REFERENCED_TABLE_NAME = '<table>';

Eine Spalte kann man so definieren:
Code:
REFERENCED_COLUMN_NAME = '<column>'
 
Zuletzt bearbeitet:
Hi,

zum grundsätzlichen Vorgehen:
* Komplett-Backup der Datenbank (sicher ist sicher!)
* Foreign Keys auflisten und irgendwo speichern / merken
* Alle FK zu der Tabelle löschen (ALTER TABLE x DROP FOREIGN KEY y)
* Tabelle umbauen so wie du es willst (Ich würde hier eine komplett neue Tabelle parallel zur alten erstellen und anschliessend die Daten per SELECT INTO von der alten in die neue Tabelle migrieren. Danach die alte löschen und die neue umbenennen.)
* FK je nach Bedarf wieder neu anlegen

Grüsse,
BK
 
Zurück