PDA

View Full Version : Incrementare id postgresql


gaiapuffo
26-08-2014, 18:38
Ciao, cavolo non riesco a capire perchè non mi fa l'autoincrement dell'id
CREATE TABLE log
(
id bigserial NOT NULL primary key,
name character varying(255) NOT NULL,
)

Poi faccio

CREATE SEQUENCE log_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1237
CACHE 1;

e in seguito

alter sequence log_id_seq owned by log.id;

gaiapuffo
26-08-2014, 18:42
Se io dopo faccio

insert into logjobs values (1,'ciao')

e poi faccio

insert into logjobs values (1,'ciao')

non mi va fare l'incremento e mi dice che esiste già una chiave con valore 1

Julianz
29-08-2014, 11:54
Ciao, ometti l'id nella dichiarazione, lo inserirà automaticamente lui:

insert into log jobs (name) values ('ciao');

Occhio che la sequence la crea automaticamente lui quando dichiari un campo SERIAL. Non c'è bisogno della CREATE SEQUENCE

Se invece hai bisogno di più controllo (tipo quando lavori con delle transazioni) puoi usare le funzioni CURRVAL e NEXTVAL per gestire la sequence

SELECT CURRVAL('log_id_seq')
SELECT NEXTVAL('log_id_seq')