Olá, não consigo fazer uma restrição funcionar da maneira que espero no postgreSQL. De dentro do pgadmin, executo a seguinte 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';
Quando executado, isso é convertido em.
-- 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 isso limite minha entrada para a coluna Tipos a uma postagem de e-mail IRL ou minutos. No entanto, ao inserir os dados da tabela, essa restrição falha quando insiro um desses tipos. A coluna Tipos é do tipo de caractere. Alguém sabe como consertar isso. Obrigado.
Altere sua restrição para
Isso será convertido pelo analisador em:
Isso deve fazer o que você está olhando.
No entanto, tenho que me perguntar se não seria melhor fazer isso:
Em seguida, adicione uma chave estrangeira para impor a restrição. Isso tornaria mais fácil adicionar tipos no futuro.