xamilo...
Realmente el tipo de dato serial no existe en postgresql.
Cuando defines una columna como serial, lo que hace postgresql es crear un objeto llamado secuencia implicitamente y ponerselo a un campo de tipo integer para que sea autoincrementado.
mira el ejemplo.
Código SQL:
Ver originalpruebas=> CREATE TABLE prueba_serial(campo1 SERIAL,campo2 text);
NOTICE: CREATE TABLE will CREATE implicit SEQUENCE "prueba_serial_campo1_seq" FOR serial COLUMN "prueba_serial.campo1"
CREATE TABLE
pruebas=> \d prueba_serial
Tabla ½public.prueba_serial╗
Columna | Tipo | Modificadores
---------+---------+----------------------------------------------------------------
campo1 | INTEGER | NOT NULL DEFAULT NEXTVAL('prueba_serial_campo1_seq'::regclass)
campo2 | text |
Cita: como hago para que si quiero que foto_id parta de 1 y valla aumentando
como sea hace?
Si te fijas en la declaración anterior, dice que el campo1 tiene como valor por defecto el evento nextval de la secuencia que ha creado. Partiendo de esto si haces esto:
Código SQL:
Ver originalpruebas=> INSERT INTO prueba_serial (campo2) VALUES('elemento1');
INSERT 0 1
pruebas=> INSERT INTO prueba_serial (campo2) VALUES('elemento2');
INSERT 0 1
pruebas=> INSERT INTO prueba_serial (campo2) VALUES('elemento3');
INSERT 0 1
pruebas=> SELECT *FROM prueba_serial;
campo1 | campo2
--------+-----------
1 | elemento1
2 | elemento2
3 | elemento3
(3 filas)
este es incrementado automaticamente valor por valor.
Espero te haya quedado claro.
saludos