MySQL - Neue Spalten hinzufügen, wenn sie noch nicht da sind...

xMen

Mitglied
MySQL : ADD COLUMN mit Bedingung -> [ IF NOT EXIST ]

Hallo MySQL-Freunde,

kurz eine Frage, die mir die Referenz nicht beantworten kann oder ich habe die korrekte Stelle noch nicht gefunden :( . Ich arbeite mit MySQL 4.0.18 und möchte über TransactSQL in eine Tabelle eine neues Feld einfügen, aber nur dann, wenn es noch nicht existiert. Also z. B. so:

Code:
ALTER TABLE myTable
ADD COLUMN myNewField [ IF NOT EXIST ]
Diese Bedingung - IF NOT EXIST - existiert ja beim Kommande "CREATE TABLE". Für Spalten habe ich das aber bisher nicht finden können.

Hat jemand eine Idee, wie ich das lösen kann?
 
Zuletzt bearbeitet:
Das Problem hatte ich auch schon mal.
Habe es mit PHP gelöst.
Zuerst habe ich einen Zähler angelegt, der den Wert 0 hat.
Dann habe ich eine "show fields from myTable" abgesetzt.
Die Ergebnisse habe ich dann überprüft, ob sie "myNewField" heißen.
Wenn ja Zähler auf 1, wenn nicht, nichts tun.
Wenn am Ende der Zähler immer noch 0 ist, dann das "Alter Table", ansonsten gibt's die Spalte halt schon.

redlama
 
Hallo redlama,

vielen Dank für Deine Antwort. Einen ähnlichen Ansatz hatte ich auch schon, wollte aber wissen, ob es dafür eine "elegantere" Lösung gibt...
 
Was bekommst du den für eine Fehlermeldung, wenn das Feld schon vorhanden ist ?
Ich schätze, es sollte nichts mit den Daten passieren, daher könntest du vom Programm bei die entsprechende Fehlernummer ignorieren lassen.
 
Hallo mage,

ich habe es noch nicht ausprobiert, welche Fehlermeldung kommt, wenn das Feld bereits existiert. Ich könnte das Problem natürlich über einen "try - catch - except"-Block abfragen. Der Weg scheint mir jedoch nicht gerade "professionell" zu sein...
 
Der sauberste Weg ist zu prüfen mit einer Abfrage auf die richtige Systemtabelle oder per PHP, ob dieses Feld schon vorhanden ist. Das mag aber nicht die Perfomanteste Lösung sein.
 

Neue Beiträge

Zurück