PostgreSQL "ALTER TABLE"

Alles zum SQL-Dialekt

Moderator: Moderatoren

PostgreSQL "ALTER TABLE"

Beitragvon AUGE_OHR » Do, 09. Aug 2012 8:06

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10260
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: PostgreSQL "ALTER TABLE"

Beitragvon georg » Do, 09. Aug 2012 8:11

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
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1801
Registriert: Fr, 08. Feb 2008 22:29

Re: PostgreSQL "ALTER TABLE"

Beitragvon AUGE_OHR » Do, 09. Aug 2012 8:27

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10260
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: PostgreSQL "ALTER TABLE"

Beitragvon georg » Do, 09. Aug 2012 8:49

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
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1801
Registriert: Fr, 08. Feb 2008 22:29


Zurück zu SQL (Sprache)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast