Buenas cacr!
Cita: Al crear un campo serial, este resuelve "automágicamente" ser un campo unique key y not null, no hay que especificarlo, pero así se crea... por eso lo de "automágicamente".
Lo siento, pero sigue siendo incorrecto.
Código:
pruebas=# create table prueba (id serial);
NOTICE: CREATE TABLE creará una secuencia implícita «prueba_id_seq» para la columna serial «prueba.id»
CREATE TABLE
pruebas=# insert into prueba values (1);
INSERT 0 1
pruebas=# insert into prueba values (1);
INSERT 0 1
pruebas=# select * from prueba;
id
----
1
1
(2 filas)
Como ves no es un campo UNIQUE
Código:
pruebas=# truncate table prueba;
TRUNCATE TABLE
pruebas=# select * from prueba;
id
----
(0 filas)
pruebas=# insert into prueba values (1);
INSERT 0 1
pruebas=# insert into prueba values (2);
INSERT 0 1
pruebas=# alter table prueba add unique (id);
NOTICE: ALTER TABLE / ADD UNIQUE creará el índice implícito «prueba_id_key» para la tabla «prueba»
ALTER TABLE
pruebas=#
Asi se pone a UNIQUE con alter table, cambias add por drop y borras.
Un saludo