neue in vorhandener Tabelle

Fragen und Probleme rund um die Abfragespache SQL.
Antworten
ludste
Neuer Benutzer
Beiträge: 4
Registriert: So 4. Nov 2018, 12:07

neue in vorhandener Tabelle

Beitrag von ludste » Mi 3. Apr 2019, 15:54

Hallo,
ich in Sachen Datenbanken und SQL sehr unerfahren; aber folgende Frage habe ich:

Wie füge ich eine (oder mehrere) Spalten in einer bestehenden Tabelle ein, ohne das die vorhandene Spalte vom Datentyp "serial" weiter gezählt wird?

Tschöö
Ludger

akretschmer
Erfahrener Benutzer
Beiträge: 7613
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: neue in vorhandener Tabelle

Beitrag von akretschmer » Mi 3. Apr 2019, 16:00

mit ALTER TABLE kannst Du weitere Spalten hinzufügen, dabei ändert sich nicht der Wert und auch nicht der nächste Wert einer SERIAL:

Code: Alles auswählen

test=*# create table ludste(id serial primary key, col1 int);
CREATE TABLE
test=*# insert into ludste (col1) values (1);
INSERT 0 1
test=*# insert into ludste (col1) values (5);
INSERT 0 1
test=*# select * from ludste;
 id | col1 
----+------
  1 |    1
  2 |    5
(2 rows)

test=*# alter table ludste add column col2 int;
ALTER TABLE
test=*# insert into ludste (col1,col2) values (50,100);
INSERT 0 1
test=*# select * from ludste;
 id | col1 | col2 
----+------+------
  1 |    1 |     
  2 |    5 |     
  3 |   50 |  100
(3 rows)

test=*#
Wenn Du eher neue Zeilen zufügen willst:

Code: Alles auswählen

test=*# insert into ludste values (-1, 99,99);
INSERT 0 1
test=*# select * from ludste;
 id | col1 | col2 
----+------+------
  1 |    1 |     
  2 |    5 |     
  3 |   50 |  100
 -1 |   99 |   99
(4 rows)

test=*# 
Du kannst das also auch überschreiben, was die Sequence vorgibt.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

ludste
Neuer Benutzer
Beiträge: 4
Registriert: So 4. Nov 2018, 12:07

Re: neue in vorhandener Tabelle

Beitrag von ludste » Mi 10. Apr 2019, 21:32

ich bin's nochmal ... :-)

nach langem herumprobieren, auch mit deinen Beispielen, habe nun die konkretere Frage:

kann ich

Code: Alles auswählen

ALTER TABLE ludste  ADD COLUMN col2 int;
und

Code: Alles auswählen

INSERT INTO ludste (col2) VALUES (50);
**** ***
so benutzen, dass nicht eine neue Zeile

Code: Alles auswählen

SELECT * from ludste;

Code: Alles auswählen

id | col1 | col2 
---+------+------
1  |    1 |     
2  |    5 |     
3  |      |   50     

enthält, sondern das zu dem vorhandenen id, z.B. 1 ein Wert der neu geschaffenen Spalte col2 z.B. 50 zugeordnet wird, also

Code: Alles auswählen

id | col1 | col2 
---+------+------
1  |    1 |   50  
2  |    5 |     
Geht das überhaupt und wie?

Tschöö
Ludger

castorp
Erfahrener Benutzer
Beiträge: 1125
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: neue in vorhandener Tabelle

Beitrag von castorp » Mi 10. Apr 2019, 22:16

Du willst ein UPDATE, nicht ein INSERT:

Code: Alles auswählen

update ludste
   set col2 = 50
where id = 1;
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

ludste
Neuer Benutzer
Beiträge: 4
Registriert: So 4. Nov 2018, 12:07

Re: neue in vorhandener Tabelle

Beitrag von ludste » Di 23. Apr 2019, 14:20

Hi castorp,

bitte um Entschuldigung, dass ich so spät antworte, aber: es klappt :) ; ich muss UPDATE anstatt INSERT verwenden.

Das kommt davon, dass man als verrentener Geograph nicht mehr an einer Postgresql-Schulung teilnimmt , sondern sich alles als den Web-Seiten heraus suchen muss :( .

Vielen Dank nochmal

Ludger

Antworten