Struktur einer vorhandenen Datenbanktabelle ändern

Status
Nicht offen für weitere Antworten.

Leroy42

Top Contributor
Hallo,

ich habe vor drei Monaten eine MySQL-Datenbanktabelle angelegt:
Code:
		"CREATE TABLE `rRechnung` ("
		+ "`id` INT NOT NULL AUTO_INCREMENT ,"
		+ "`nummer` TEXT,"
		+ "`kunde` int,"
		+ "`datum` datetime,"
		+ "`bezahlt` datetime,"
		+ "`versand` float,"
		+ "`bezahlTyp` int,"
		+ "PRIMARY KEY ( `id` )"
		+ ")",
die, wie sich heute herausgestellt hat, noch um eine Spalte
Code:
geliefert datetime
erweitert werden muss. 🙁

Die prinzipielle Vorgehensweise ist mir klar:

1) Eine neue Tabelle rRechnung2 anlegen
2) Die alte Tabelle entlang der ID Satz für Satz auslesen
und die Sätze in dieser Reihenfolge in die neue Tabelle speichern
(damit die IDs erhalten bleiben)
3) Die alte Tabelle löschen
4) Die neue Tabelle mit den Namen der alten versehen.

Punkt 4) ist notwendig, da eine weitere Tabelle Posten, die die
einzelnen Posten einer Rechnung aufnimmt, via "rechnung int" auf die
zugehörige ID der Rechnung verweist.

Nun meine Frage:

Kann ich die dann neu erzeugte Tabelle irgendwie umbenennen oder
muß ich allen Java-Programmen, die auf diese Datenbank Bezug nehmen,
den Namen der Tabelle von "rRechnung" auf "rRechnung2" ändern?

Vielen Dank im Voraus!
 
mache für Punkt 4 doch einfach das gleiche:
die alte Tabelle ist gelöscht, also mit passenden Namen neu erstellen und alle Daten kopieren..

ALTER TABLE ist dir bekannt?
 
alter table rRechnung add geliefert datetime after bezahlt

Woow! So einfach geht das ja; nix mit hin-und-her kopieren! :shock:

Jetzt noch eine Frage an die MySQL-Experten:

Gibt es auch eine einfache Möglichkeit, die neue Spalte in allen
Zeilen mit einem bestimmten Wert zu belegen? Zum Beispiel der 1. August 2007

"update rRechnung set geliefert='2007-08-01' where id="

Was muss dann hinter: where id= damit alle Datensätze verändert werden? ???:L

Oder ist es gar möglich, ohne ein Java Programm, das Lieferdatum jeder
Rechnung auf das Rechnungsdatum der entsprechenden Rechnung zu setzen? :shock:
 
Verstehe ich MySQL richtig, das wenn ich schreibe

Code:
update rRechnung set geliefert=datum

dass dann das Lieferdatum jeder Rechnung auf den Wert
gesetzt wird, der dem Wert von datum der entsprechenden
Zeile entspricht?

Ich stelle diese Frage hier, damit ich nicht aus Versehen
meine gesamte Tabelle zerstöre, wenn ich die obige Zeile abschicke. :?
 
ja auf jeder.

du kannst aber bei altern table, einen default wert angeben.

hast du irgendow zugriff auf phpmyadmin? da kannst du solche dinge über eine grafisch oberfläche machen und es wird dir der query angezeigt, so hab ich viel sql gelernt.
 
ARadauer hat gesagt.:
hast du irgendow zugriff auf phpmyadmin?

Habe ich tatsächlich (gerade herausbekommen).

Danke für den Hinweis; das erleichtert solche Änderungen ungemein;
da brauch' ich nicht jedesmal eine selbstgeschriebene JSP
bemühen um einen MySQL-Befehl abzusenden! 😀
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben