PostgreSQL Table Column "ändern"
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
PostgreSQL Table Column "ändern"
hi,
mit "ALTER TABLE" fangen wohl die Befehle an die man benötigt wenn man eine Column "hinzufügen", "entfernen" oder "umbenennen" will.
Frage : bleibt beim "umbenennen" der Field "Inhalt" erhalten ?
angenommen ich habe ein Field Type "C" und möchte nun ein Field Type "D" damit "füllen"
also muss ich "C" (DDMMYY) nach "D" (YYYY-MM-DD) umwandeln ...
wenn ich das ich eine "Schleife" machen muss würde ich "meine" Xbase++ FUNCTION dafür nutzen.
Frage : kann ich das mit "einem" Befehl innerhalb von "SELECT ..." machen ?
... und wie bekomme ich "meine" FUNCTION in den "SELECT ..." ?
oder muss ich "in" der PG Table eine "Function" einbauen die ich mit "SELECT ..." aufrufe ?
mit "ALTER TABLE" fangen wohl die Befehle an die man benötigt wenn man eine Column "hinzufügen", "entfernen" oder "umbenennen" will.
Frage : bleibt beim "umbenennen" der Field "Inhalt" erhalten ?
angenommen ich habe ein Field Type "C" und möchte nun ein Field Type "D" damit "füllen"
also muss ich "C" (DDMMYY) nach "D" (YYYY-MM-DD) umwandeln ...
wenn ich das ich eine "Schleife" machen muss würde ich "meine" Xbase++ FUNCTION dafür nutzen.
Frage : kann ich das mit "einem" Befehl innerhalb von "SELECT ..." machen ?
... und wie bekomme ich "meine" FUNCTION in den "SELECT ..." ?
oder muss ich "in" der PG Table eine "Function" einbauen die ich mit "SELECT ..." aufrufe ?
gruss by OHR
Jimmy
Jimmy
Re: PostgreSQL Table Column "ändern"
Also ich wuerde ein neues Feld fuer das Datum als Datumsformat einfuegen:AUGE_OHR hat geschrieben:hi,
mit "ALTER TABLE" fangen wohl die Befehle an die man benötigt wenn man eine Column "hinzufügen", "entfernen" oder "umbenennen" will.
Frage : bleibt beim "umbenennen" der Field "Inhalt" erhalten ?
angenommen ich habe ein Field Type "C" und möchte nun ein Field Type "D" damit "füllen"
also muss ich "C" (DDMMYY) nach "D" (YYYY-MM-DD) umwandeln ...
wenn ich das ich eine "Schleife" machen muss würde ich "meine" Xbase++ FUNCTION dafür nutzen.
Frage : kann ich das mit "einem" Befehl innerhalb von "SELECT ..." machen ?
... und wie bekomme ich "meine" FUNCTION in den "SELECT ..." ?
oder muss ich "in" der PG Table eine "Function" einbauen die ich mit "SELECT ..." aufrufe ?
Code: Alles auswählen
ALTER TABLE deine_tabelle ADD COLUMN dein_neues_feld DATE;
Code: Alles auswählen
UPDATE deine_tabelle SET dein_neues_feld=TO_DATE(dein_altes_feld, 'DDMMYY');
Code: Alles auswählen
ALTER TABLE deine_tabelle DROP COLUMN dein_altes_feld;
Code: Alles auswählen
ALTER TABLE deine_tabelle RENAME dein_neues_feld TO dein_altes_feld;
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: PostgreSQL Table Column "ändern"
hi,
danke für deine Antwort, das war genau das was ich wissen wollte.
Frage : ich schicke ja 4 Statments "hintereinander" ... was müsste man im Netzwerk beachten ?
p.s. danke für TO_DATE() ... da hätte ich wieder lange gesucht wie nach TIME() -> NOW() ...
danke für deine Antwort, das war genau das was ich wissen wollte.
Frage : ich schicke ja 4 Statments "hintereinander" ... was müsste man im Netzwerk beachten ?
p.s. danke für TO_DATE() ... da hätte ich wieder lange gesucht wie nach TIME() -> NOW() ...
gruss by OHR
Jimmy
Jimmy
Re: PostgreSQL Table Column "ändern"
Die 4 Statements sind so ausgelegt, dass jeder einzelne Schritt die Datenbank in einem (weiterhin) brauchbaren Zustand hinterlaesst. Es waere natuerlich sinnvoll, neue Eintraege waehrend den Schritten 2-4 zu verhindern, ein Lock auf die Tabelle oder ein blockieren des Eingangsports wären da Möglichkeiten.AUGE_OHR hat geschrieben:hi,
danke für deine Antwort, das war genau das was ich wissen wollte.
Frage : ich schicke ja 4 Statments "hintereinander" ... was müsste man im Netzwerk beachten ?
p.s. danke für TO_DATE() ... da hätte ich wieder lange gesucht wie nach TIME() -> NOW() ...
"Im Netzwerk" ist also weniger problematisch, als "im laufenden Betrieb" - das würde ich versuchen zu vermeiden.
Vielleicht missverstehe ich hier aber auch deine Frage.
Gibt im PostgreSQL-Handbuch übrigens ein Kapitel zu den ganzen Umwandlungsfunktionen (TO_allesmoegliche), das ist überall da hilfreich, wo einfache CASTs nicht helfen (im Fall deines Beispiels wäre altes_feld::DATE zum Beispiel dann als YYMMDD statt DDMMYY interpretiert worden).
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: PostgreSQL Table Column "ändern"
Hmm,
man sollte latürnich auch die Berechtigungen (GRANTS) nicht außer Acht lassen, die auf der alten (zu droppenden) Spalte waren...
Viele Grüße,
Martin
man sollte latürnich auch die Berechtigungen (GRANTS) nicht außer Acht lassen, die auf der alten (zu droppenden) Spalte waren...
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Re: PostgreSQL Table Column "ändern"
Faellt mir gerade schwer, da akut ein sonderlich grosses Risiko zu sehen, aber im Prinzip hast du natuerlich recht.Martin Altmann hat geschrieben:Hmm,
man sollte latürnich auch die Berechtigungen (GRANTS) nicht außer Acht lassen, die auf der alten (zu droppenden) Spalte waren...
Viele Grüße,
Martin