Autor Thema: [MySQL] ALTER TABLE irgendwie mit IF NOT EXISTS?  (Gelesen 5742 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Karl Lauer

  • Alte Garde
  • Legend
  • *******
  • Back 2 the roots
  • Beiträge: 6.518
  • Geschlecht: Männlich
  • Username: Karl Lauer
Jo, hier die lang Fassung der Überschrift:

ich hab da das Problem das ich eine colum anlegen möchte wenn sie nicht schon existiert

also eben einen befehl

ALTER TABLE Tabelle ADD (column SMALLINT( 2 ) UNSIGNED NOT NULL DEFAULT '0') der nur ausgeführt wird wenn die column nicht existent ist.

Hab mich jetzt quer durch meine Lehrbücher gewälzt und mit der Online Dokumentation gekämpft, aber es nicht lösen können.

Help anybody?
"When I was a kid... I dreamed of outer space. And then I got here - and I dream of Earth" John Crichton, Farscape
“You need to get yourself a better dictionary. When you do, look up “genocide”. You’ll find a little picture of me there, and the caption’ll read “Over my dead body.” Tenth Doctor Who

Offline Hr. Rabe

  • Hoëcker
  • Famous Hero
  • ******
  • Beiträge: 2.317
  • Geschlecht: Männlich
  • Username: TheRavenNevermore
    • Dragons and Bytecode Blog
Re: [MySQL] ALTER TABLE irgendwie mit IF NOT EXISTS?
« Antwort #1 am: 20.03.2008 | 20:18 »
Geht in den meisten Datenbanke mit gaaaaaaanz fiesen Tricks und ist daher auch sehr datenbankspeziefisch.

Und auch ich sage dir, was dir wohl jeder sagen wird: Wer zu Laufzeit seines Programmes die Tabellenstrucktur der Datenbank anfassen muß hat schlecht designed -> zurück ans Reisbreit ;)

Warum willst du das den tun?
#define EVER ( ; ; )


Dragons and Bytecode

killedcat

  • Gast
Re: [MySQL] ALTER TABLE irgendwie mit IF NOT EXISTS?
« Antwort #2 am: 20.03.2008 | 20:33 »
Sorry! Beats me!

Offline Haukrinn

  • BÖRK-Ziege
  • Mythos
  • ********
  • Jetzt auch mit Bart!
  • Beiträge: 11.716
  • Geschlecht: Männlich
  • Username: haukrinn
Re: [MySQL] ALTER TABLE irgendwie mit IF NOT EXISTS?
« Antwort #3 am: 21.03.2008 | 08:18 »
Laut meinem MySQL-Buch geht das nicht. Ansonsten hat der Rabe schon völlig recht, Datenbanken sollten erst eine vollständig designte Struktur besitzen, die nicht mehr verändert wird, bevor mit ihnen arbeitet. Naja, fast recht, denn
zurück ans Reisbreit
soll wohl eher
zurück zum Breitreis (was ja bekanntlich eine nord-thailändische Untergattung des Sumpfreis ist)
heißen. Und recht hat er, stärke Dich erst einmal ein wenig, und dann überleg' noch mal genau, was Du da überhaupt tun willst.
What were you doing at a volcano? - Action geology!

Most people work long, hard hours at jobs they hate that enable them to buy things they don't need to impress people they don't like.

Offline der.hobbit

  • Männliche Rollenspielerfreundin
  • Famous Hero
  • ******
  • So isses. Oder anders.
  • Beiträge: 2.498
  • Geschlecht: Männlich
  • Username: der.hobbit
    • Abenteuer Archiv
Re: [MySQL] ALTER TABLE irgendwie mit IF NOT EXISTS?
« Antwort #4 am: 21.03.2008 | 10:09 »
Dynamische Änderungen von Tabellen sind wohl fies - aber da sie dynamisch sind wirst du das ganze wahrscheinlich auch programmatisch machen, oder?
Dann hole dir erst mal mit DESCRIBE die Tabellendaten, und kontrolliere dann in deiner Programmiersprache, ob die Spalte existiert. Das ist zwar einerseits eine Anfrage mehr, aber andererseits eine SQL-seitig sehr billige. Da du hoffentlich nicht zu oft diese dynamische Anpassung vornimmst, sollte die Performance hier nur bedingt eine Rolle spielen.
Forenrollenspiel? FFOR!
Superhelden? FFOR!

Offline kirilow

  • Dr. Sommer-kirilow
  • Hero
  • *****
  • Wahrheitsaktivist
  • Beiträge: 1.628
  • Geschlecht: Männlich
  • Username: kirilow
Re: [MySQL] ALTER TABLE irgendwie mit IF NOT EXISTS?
« Antwort #5 am: 21.03.2008 | 16:45 »
Wenn Du die Entscheidung, ob die neue Spalte angelegt werden soll, aus irgendeinem Grund nicht auf der Anwendungsebene haben willst, könntest Du das natürlich mt einer Stored Procedure machen. (Habe extra noch einmal nachgesehen, MySQL 5 kann jetzt auch SPs)
Ansonsten wäre ich auch neugierig, wofür Du das haben willst,

Viele Grüße
kirilow
Der Kummerkasten von Dr. Sommer-kirilow ist im rsp-blog Forum. Hier ist sein Postfach voll.

Darkwalker

  • Gast
Re: [MySQL] ALTER TABLE irgendwie mit IF NOT EXISTS?
« Antwort #6 am: 23.03.2008 | 08:16 »
Bei richtigen Datenbanken (Oracle etc.) gibt es eine SQL-Tabelle in der die Tabellenstrukturen beschrieben sind (Catalog o.ä) und die man mit nem Select-String prüfen kann. Ob meinSQL das auch hat, müsste mal in der Doku geprüft werden.