SQL Spalte umbenennen?

4 Antworten

Das Umbenennen einer Spalte ist allenfalls im Teststadium einer Datenbank sinnvoll und nötig. Dafür gibt es auch eine SQL-Anweisung und die geht auch nur bei exclusiver Belegung der Tabelle. So wie ich Deine Frage verstehe, möchtest Du das im normalen Userbetrieb machen. Wie hast Du Dir das vorgestellt? Normalerweise arbeiten mehrere User gleichzeitig in der Datenbank. Das kann die Datenbank, dafür ist sie auch gemacht. Selbst wenn Du das hinbekommst, vernünftig arbeiten wirst mit der Datenbank nicht können. Das ist in etwa so, wie das Auswechseln von Zündkerzen bei laufendem Motor. Kein vernünftiger Mensch würde das machen.

Wenn Dir das notwendig erscheint, ist Deine Datenbank falsch konzipiert. Das was Du vorhast ist nichts anderes, als einen vorhandenen Fehler statt diesen zu beseitigen durch einen neuen zu kompensieren. Sowas kann man mal im kleinen Rahmen machen, nur ausnahmsweise, aber nicht als generelle Lösungsmöglichkeit.

Wenn Du verraten würdest, wozu Du das benötigst, könnten wir Dir helfen. So wirst Du nicht weiterkommen. Das wird so sein, um bei obigem Beispiel zu bleiben, wie Reifenwechsel während der Fahrt.

schau mal, was

select * from information_schema.columns where table_name ="" and column_name ="";

sagt.

Da gibts ne Spalte data_type und is_nullable, sowie weitere infos


rikks  28.04.2017, 01:30

bei table_name und column_name kommt entaprechend tabellen- und spaltenname rein

Mir ist da kein Weg bekannt, der das analysieren der Tabelle umgeht.

Entweder machst Du vorher ein describe table und bastelst daraus dein SQL oder du nimmst ein SHOW CREATE TABLE und holst dir daraus den entsprechenden Teil (ich spekuliere, dass Du MySQL nutzt).


MineHome 
Beitragsersteller
 28.04.2017, 00:42

Ich werde dann wohl irgendwas aus 

SHOW COLUMNS FROM TABELLE

basteln, da bleibt mir wohl nichts anderes übrig :D

AnnaOHa  28.04.2017, 01:04
@MineHome

Wenn Du in mysql bist, halte ich es beinahe für einfacher, 

show create table TABELLE

zu parsen. Aber sonst: ja, ich fürchte, das ist dein Weg. Viel Erfolg!

Moin,

Standard ist ->

ALTER TABLE <old-name> RENAME <new-name>

ohne weitere angaben ... 

so long(knife)


rikks  28.04.2017, 01:32

alter table ... rename ... kannst du mit Rename table ... to ... abkürzen, das arbeitet schneller.

MineHome 
Beitragsersteller
 28.04.2017, 00:21

Jedoch möchte ich das Feld umbenennen, nicht die Tabelle...

MineHome 
Beitragsersteller
 28.04.2017, 00:44
@MrLongknife

Auch diesen Befehl kenne ich schon. Das Problem ist, wie in meiner Frage beschrieben, dass ich den Datentyp und weitere Attribute (Primary Key, Unique, ...) nicht kenne.