Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/11/2010, 07:44
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: dato serial como primary key

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 original
  1. pruebas=> CREATE TABLE prueba_serial(campo1 SERIAL,campo2 text);
  2. NOTICE:  CREATE TABLE will CREATE implicit SEQUENCE "prueba_serial_campo1_seq" FOR serial COLUMN "prueba_serial.campo1"
  3. CREATE TABLE
  4. pruebas=> \d prueba_serial
  5.                             Tabla ½public.prueba_serial╗
  6.  Columna |  Tipo   |                         Modificadores
  7. ---------+---------+----------------------------------------------------------------
  8.  campo1  | INTEGER | NOT NULL DEFAULT NEXTVAL('prueba_serial_campo1_seq'::regclass)
  9.  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 original
  1. pruebas=> INSERT INTO prueba_serial (campo2) VALUES('elemento1');
  2. INSERT 0 1
  3. pruebas=> INSERT INTO prueba_serial (campo2) VALUES('elemento2');
  4. INSERT 0 1
  5. pruebas=> INSERT INTO prueba_serial (campo2) VALUES('elemento3');
  6. INSERT 0 1
  7. pruebas=> SELECT *FROM prueba_serial;
  8.  campo1 |  campo2
  9. --------+-----------
  10.       1 | elemento1
  11.       2 | elemento2
  12.       3 | elemento3
  13. (3 filas)

este es incrementado automaticamente valor por valor.

Espero te haya quedado claro.


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming