Hola, parece que no puedo obtener una restricción que funcione de la manera que espero en postgreSQL. Desde pgadmin ejecuto la siguiente consulta SQL.
-- Check: "TypeCheck"
-- ALTER TABLE "ComLog" DROP CONSTRAINT "TypeCheck";
ALTER TABLE "ComLog"
ADD CONSTRAINT "TypeCheck" CHECK ("Type" SIMILAR TO 'email|post|IRL|minutes');
COMMENT ON CONSTRAINT "TypeCheck" ON "ComLog" IS 'One of email|post|IRL|minutes';
Cuando se ejecuta esto se convierte a.
-- Check: "TypeCheck"
-- ALTER TABLE "ComLog" DROP CONSTRAINT "TypeCheck";
ALTER TABLE "ComLog"
ADD CONSTRAINT "TypeCheck" CHECK ("Type" ~ similar_escape('email|post|IRL|minutes'::text, NULL::text));
COMMENT ON CONSTRAINT "TypeCheck" ON "ComLog" IS 'One of email|post|IRL|minutes';
Espero que esto limite mi entrada para la columna Tipos a una de correo electrónico IRL o minutos. Sin embargo, al ingresar datos de la tabla, esta restricción falla cuando ingreso uno de estos tipos. La columna Tipos es de tipo de caracteres. Alguien sabe cómo arreglar esto. Gracias.
postgresql
constraint
wookie1
fuente
fuente
CHECK (type in ('email','post','IRL','minutes')
?Respuestas:
Cambia tu restricción a
El analizador lo convertirá en:
Eso debería hacer lo que estás mirando.
Sin embargo, me pregunto si no sería mejor hacer esto:
Y luego agregue una clave foránea para hacer cumplir la restricción. Esto facilitaría agregar tipos en el futuro.
fuente