mehrere tabellen modifizieren
alex_
- datenbank
huhu folx,
falls sich jemand gut mit mysql auskennt, vielleicht kann er mir n tipp geben, wie ich folgendes in einer Zeile unterkriege:
Ich will in jeder Tabelle einer Datenbank Spalten umdefinieren (zb Text->Varchar) sofern die Tabellen die Spalte definiert haben.
Oder zb die SPalte einfach nur löschen sofern die Tabellen diese aufweisen.
Kann mir das jemand n Einzeiler geben? zur Not muß ich das dann in einer Schleife (Perl) tun...
thx
Hi,
zum ändern des spaltennamens und typs:
ALTER TABLE `nachrichten` CHANGE `altername` `neuername` INT( 11 ) DEFAULT NULL
zum löschen
ALTER TABLE `nachrichten` DROP `neuername`
neue spalte
ALTER TABLE `nachrichten` ADD `neuesfeld` VARCHAR( 11 ) NOT NULL ;
MfG
argl, hast du dir überhaupt durchgelesen was ich gefragt habe?
Hi,
argl, hast du dir überhaupt durchgelesen was ich gefragt habe?
Ja, aber du kannst nur eine tabelle anch der anderen machen.
für mehrere spalten musst du das so machen:
ALTER TABLE `test` RENAME `tabelle` ;
ALTER TABLE `tabelle`
ADD `neuesfeld1` INT NOT NULL ,
ADD `neuesfeld2` INT NOT NULL ,
ADD `neuesfeld3` INT NOT NULL ;
ALTER TABLE `tabelle`
CHANGE `neuesfeld1` `umbenannt` INT( 11 ) DEFAULT '0' NOT NULL ,
CHANGE `neuesfeld2` `neuesfeld2` TIMESTAMP DEFAULT '0' NOT NULL ,
CHANGE `neuesfeld3` `neuesfeld3` INT( 11 ) DEFAULT '0';
ALTER TABLE `tabelle`
DROP `umbenannt`,
DROP `neuesfeld2`,
DROP `neuesfeld3`;
jetzt zufrieden?
MfG
nope, irgendwie hatte ich das anders gemeint:
Ich habe eine DB mit hunderten von Tabellen. Jetzt will ich in allen Tabellen zb eine neue Spalte hinzufügen. Angenommen ich kenn die Tabellennamen nicht mal.
so würde ich in perl:
Die Frage ist nun, ob ich mir an der Stelle Perl Code sparen kann indem ich mysql schachtele: "ALTER TABLE SELECT ... DROP ..." irgendwie sowas hatte ich vermutet, da hört aber mein Wissen auf...
gruß
Hi,
argl, hast du dir überhaupt durchgelesen was ich gefragt habe?
Ja, aber du kannst nur eine tabelle anch der anderen machen.für mehrere spalten musst du das so machen:
ALTER TABLE
test
RENAMEtabelle
;ALTER TABLE
tabelle
ADDneuesfeld1
INT NOT NULL ,
ADDneuesfeld2
INT NOT NULL ,
ADDneuesfeld3
INT NOT NULL ;ALTER TABLE
tabelle
CHANGEneuesfeld1
umbenannt
INT( 11 ) DEFAULT '0' NOT NULL ,
CHANGEneuesfeld2
neuesfeld2
TIMESTAMP DEFAULT '0' NOT NULL ,
CHANGEneuesfeld3
neuesfeld3
INT( 11 ) DEFAULT '0';ALTER TABLE
tabelle
DROPumbenannt
,
DROPneuesfeld2
,
DROPneuesfeld3
;
>
> jetzt zufrieden?
>
> MfG