neue in vorhandener Tabelle

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

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

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:

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.


ich bin’s nochmal … :slight_smile:

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

kann ich

ALTER TABLE ludste  ADD COLUMN col2 int;

und

INSERT INTO ludste (col2) VALUES (50);

so benutzen, dass nicht eine neue Zeile

SELECT * from ludste;



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

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

Geht das überhaupt und wie?

Tschöö
Ludger

Du willst ein UPDATE, nicht ein INSERT:

update ludste
   set col2 = 50
where id = 1;

Hi castorp,

bitte um Entschuldigung, dass ich so spät antworte, aber: es klappt :slight_smile: ; 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 :frowning: .

Vielen Dank nochmal

Ludger