PostgreSQL "ALTER TABLE"

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

PostgreSQL "ALTER TABLE"

Beitrag von AUGE_OHR »

hi,

zum modifizieren einer Table Structure verwende ich diesen Code

Code: Alles auswählen

IF lNew
   cQuery += "CREATE TABLE " + cTable + " ( "
ELSE
   cQuery += "ALTER TABLE " + cTable + " ADD COLUMN "
ENDIF
das funktioniert auch soweit, aber jedes "neue" Field wird "am Ende" angehängt ...

ich hätte aber gerne das "neue" Field vor die "__"Fields "eingeordnet" ... geht das ? wenn wie ?
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: PostgreSQL "ALTER TABLE"

Beitrag von georg »

Hallo, Jimmy -


das ist ein Auszug aus dem ALTER TABLE Syntax-Diagramm von MySQL:
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
[alter_specification [, alter_specification] ...]
[partition_options]

alter_specification:
table_options
| ADD [COLUMN] col_name column_definition
[FIRST | AFTER col_name ]

Code: Alles auswählen

Quelle: http://dev.mysql.com/doc/refman/5.5/en/alter-table.html
Was sagt die PostgreSQL-Dokumentation dazu?

Andere Frage: warum ist Dir die Feldreihenfolge wichtig?


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: PostgreSQL "ALTER TABLE"

Beitrag von AUGE_OHR »

georg hat geschrieben:das ist ein Auszug aus dem ALTER TABLE Syntax-Diagramm von MySQL:
...
Was sagt die PostgreSQL-Dokumentation dazu?
im Help file sind die folgende Syntax Anweisungen aufgeführt

Code: Alles auswählen

ALTER TABLE [ ONLY ] tabelle [ * ]
   ADD [ COLUMN ] spalte typ [ spalten_constraint [ ... ] ]
ALTER TABLE [ ONLY ] tabelle [ * ]
   DROP [ COLUMN ] spalte [ RESTRICT | CASCADE ]
ALTER TABLE [ ONLY ] tabelle [ * ]
   ALTER [ COLUMN ] spalte { SET DEFAULT wert | DROP DEFAULT }
ALTER TABLE [ ONLY ] tabelle [ * ]
   ALTER [ COLUMN ] spalte { SET | DROP } NOT NULL
ALTER TABLE [ ONLY ] tabelle [ * ]
   ALTER [ COLUMN ] spalte SET STATISTICS ganze_zahl
ALTER TABLE [ ONLY ] tabelle [ * ]
   ALTER [ COLUMN ] spalte SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
ALTER TABLE [ ONLY ] tabelle [ * ]
   RENAME [ COLUMN ] spalte TO neue_spalte
ALTER TABLE tabelle
   RENAME TO neue_tabelle
ALTER TABLE [ ONLY ] tabelle [ * ]
   ADD tabellen_constraint
ALTER TABLE [ ONLY ] tabelle [ * ]
   DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]
ALTER TABLE tabelle
   OWNER TO neuer_eigentümer
und als Beispiele

Code: Alles auswählen

Beispiel

Um einer Tabelle eine Spalte vom Typ varchar hinzuzufügen:
ALTER TABLE händler ADD COLUMN adresse varchar(30);

Um eine Spalte aus einer Tabelle zu löschen:
ALTER TABLE händler DROP COLUMN adresse RESTRICT;

Um eine bestehende Spalte umzubenennen:
ALTER TABLE händler RENAME COLUMN adresse TO stadt;

Um eine bestehende Tabelle umzubenennen:
ALTER TABLE händler RENAME TO lieferanten;

Einer Spalte einen NOT-NULL-Constraint hinzuzufügen:
ALTER TABLE händler ALTER COLUMN straße SET NOT NULL;

Um einen NOT-NULL-Constraint von einer Spalte zu entfernen:
ALTER TABLE händler ALTER COLUMN straße DROP NOT NULL;

Um einer Tabelle einen Check-Constraint hinzuzufügen:
ALTER TABLE händler ADD CONSTRAINT plzchk CHECK (char_length(plz) = 5);

Um einen Check-Constraint aus einer Tabelle und allen Kindtabellen zu entfernen:
ALTER TABLE händler DROP CONSTRAINT plzchk;

Um einer Tabelle einen Fremdschlüssel hinzuzufügen:
ALTER TABLE händler ADD CONSTRAINT adrfk FOREIGN KEY (adresse) REFERENCES adressen
(adresse) MATCH FULL;

Um einer Tabelle einen (mehrspaltigen) Unique Constraint hinzuzufügen:
ALTER TABLE händler ADD CONSTRAINT hdl_id_plz_schlüssel UNIQUE (hdl_id, plz);

Um einer Tabelle einen automatisch benannten Primärschlüssel-Constraint hinzuzufügen, wobei beachtet werden muss, dass eine Tabelle immer nur einen Primärschlüssel haben kann:
ALTER TABLE händler ADD PRIMARY KEY (hdl_id);
georg hat geschrieben:Andere Frage: warum ist Dir die Feldreihenfolge wichtig?
nur weil mit das "stört" das die "default" in pgAdmin.EXE dann "hinten" sind.
in PGu.EXE kann ich bei der Field Auswahl ja vorher "sortieren" und hab dann die "__" wieder "hinten"
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: PostgreSQL "ALTER TABLE"

Beitrag von georg »

Hallo, Jimmy -


Du hast ja immer noch die Option, die alte Tabelle umzubenennen, eine neue nach Wunsch (Feldfolge) zu erstellen und dann die Daten zu übernehmen.


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Antworten