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)