Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/03/2008, 15:53
bransh
 
Fecha de Ingreso: enero-2008
Mensajes: 25
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: ENUM + AUTOINCREMET en Postgres

Hola como andas.

En postgres no existe el tipo ENUM, pero lo podemos simular muy facilmente:

Código:
CREATE TABLE animals (
    grp VARCHAR(255) NOT NULL,
    id INTEGER NOT NULL,
    name CHAR(30) NOT NULL,
    
    PRIMARY KEY (grp,id),
    CHECK (grp IN ('fish','mammal','bird'))
);
El Check Constraint impedira que se ingrese algo distinto

Luego, para tomar los id que vos queres, deberias ejecutar una sentencia como al siguiente:


Código:
INSERT INTO animals
VALUES ('bird', COALESCE((SELECT MAX(id) FROM animals 
WHERE grp = 'bird'), 0) + 1, 'penguin')
Espero te sirva!
Saludos

P/D: la funcion coalesce existe en la mayoria de los DB si no es en todos, y te
devuelve el primer elemento no nulo de la serie que vos le pasas, en este caso
el maximo id para el grupo X de la tabla animales y el numero 0.
(ahora si, salu2)