Re: Wie mit Tabellen-veränderungen umgehen?
- From: Christian Kirsch <ck@xxxxxxx>
- Date: Thu, 09 Feb 2006 14:02:02 +0100
Nikolai Onken schrieb:
Hallo,
ich soll ein System (InnoDB) redesignen und habe z.B. eine Tabelle in
der der Primary Key 'objectName' nicht ein Integer ist, sondern ein md5
hash (Warum weiß ich auch nicht...). Diese wird in mehreren anderen
Tabellen referenziert.
Jetzt möchte ich den Primary Key 'objectName' (VARCHAR) in id (INT
AUTO_INCREMENT) verändern.
Das Folgende *ohne* die Dokumentation zu den Statements gelesen zu
haben, keine Garantie also:
ALTER TABLE tabelle DROP PRIMARY KEY;
ALTER TABLE tabelle ADD neue_ID integer unsigned auto_increment;
ALTER TABLE tabelle2 ADD neue_ID integer unsigned;
Mit hinreichend neuer MySQL-Version solltest Du jetzt ein UPDATE für
jede der abhängigen Tabellen formulieren können, das etwa so aussieht:
UPDATE tabelle2, tabelle1 set tabelle2.neue_id=tabelle1.neue_id where
tabelle2.alte_id = tabelle1.neue_id;
Wenn Du das mit allen abhängigen Tabellen erledigt hast, kommt der
ALTER TABLE tabelle PRIMARY KEY neue_ID;
ALTER TABLE tabelle DROP alte_ID;
Und jetzt für die abhängigen Tabellen:
ALTER TABLE tabelle2 DROP PRIMARY KEY;
ALTER TABLE tabelle2 PRIMARY_KEY neue_ID;
Allerdings solltest Du das DROP alte_ID nur durchführen, wenn Du statt
'warum, weiß ich auch nicht' eine bessere Erklärung für die Existenz
dieses Attributs hast.
.
- Follow-Ups:
- Re: Wie mit Tabellen-veränderungen umgehen?
- From: Nikolai Onken
- Re: Wie mit Tabellen-veränderungen umgehen?
- References:
- Wie mit Tabellen-veränderungen umgehen?
- From: Nikolai Onken
- Wie mit Tabellen-veränderungen umgehen?
- Prev by Date: Re: mysql, php, Kollationen und Tschechisch
- Next by Date: Re: Wie mit Tabellen-veränderungen umgehen?
- Previous by thread: Wie mit Tabellen-veränderungen umgehen?
- Next by thread: Re: Wie mit Tabellen-veränderungen umgehen?
- Index(es):
Relevant Pages
|
Loading