Hola polmadur..
la explicación de esto la cito exactamente a como dice la documentación oficial de postgres y te la explico después.
Cita: 8.1.4. Serial Types
The data types serial and bigserial are not true types, but merely a notational convenience for setting up unique identifier columns (similar to the AUTO_INCREMENT property supported by some other databases). In the current implementation, specifying
CREATE TABLE tablename (
colname SERIAL
);
is equivalent to specifying:
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL
);
tomado de:
http://www.postgresql.org/docs/8.1/i...ATATYPE-SERIAL
La secuencia "inventari_Registre_seq" pero estarías ingresandola 2 veces en campos que no corresponden. Cuando utilizas un tipo de dato serial el crea implicitamente una secuencia que nosotros como administradores de bases de datos ni tenemos conocimiento. Para hacer una inserción correcta en tu tabla sería sin llamar el campo
Registre ya que como ves en la documentación es un valor por defecto del campo.
Código SQL:
Ver originalpruebas=> INSERT INTO inventari ("Titol","Autor","Publicacio",
pruebas(> "Col·leccio","Materia","Descriptors","Nivell","Resum","Format",
pruebas(> "Descripcio","ISBN","ISSN") VALUES ('Insercion de serial', 'yo',
pruebas(> 'hoy 2010', '2010,1988 Cristian', 'python', 'tots', 'tots',
pruebas(> 'prueba a ver si meto el serial', 'shell', 'shell', 45-55555-85-6, NULL);
INSERT 0 1
Si en vez de crear el campo serial lo creas como integer o bigint y creas aparte la secuencia, en este caso si es necesario llevar a la inserción la función nextval y pasarle la secuencia manualmente para se haga la inserción.
En pocas palabras, el problema se presenta por que el campo serial pone por defecto el valor de la secuencia creada implícitamente por el mismo campo.
Cita: PD: soy un poco novato en postgres, si ven alguna mejora en la creacion de tablas se aceptan sugerencias, muchas gracias
la tabla está bien, debes cambiar únicamente la forma de insertar como te lo puse en el ejemplo anterior.
Espero haberte aclarado tus dudas