ludste
3. April 2019 um 13:54
1
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.
ludste
10. April 2019 um 19:32
3
ich bin’s nochmal …
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;
ludste
23. April 2019 um 12:20
5
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