Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

dato serial como primary key

Estas en el tema de dato serial como primary key en el foro de PostgreSQL en Foros del Web. acá en postgres un dato PK ejemplo foto_id se denomina serial... pero como es su ejecución, su desarrollo, es auto-numérico? como hago para que si ...
  #1 (permalink)  
Antiguo 17/11/2010, 07:33
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
dato serial como primary key

acá en postgres un dato PK ejemplo foto_id
se denomina serial...

pero como es su ejecución, su desarrollo, es auto-numérico?

como hago para que si quiero que foto_id parta de 1 y valla aumentando
como sea hace?
__________________
- Ingeniero en Informática -
  #2 (permalink)  
Antiguo 17/11/2010, 07:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 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
  #3 (permalink)  
Antiguo 17/11/2010, 09:56
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: dato serial como primary key

muxas gracias!
__________________
- Ingeniero en Informática -

Etiquetas: dato, key, serial
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:30.