Oi Não consigo obter uma restrição funcionando da maneira que espero no postgreSQL. De dentro do pgadmin, eu 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 mensagem de email IRL ou minutos. No entanto, ao inserir dados da tabela, essa restrição falha ao inserir um desses tipos. A coluna Tipos é do tipo de caractere. Alguém sabe como consertar isso. Obrigado.
postgresql
constraint
wookie1
fonte
fonte
CHECK (type in ('email','post','IRL','minutes')
?Respostas:
Mude 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:
E adicione uma chave estrangeira para impor a restrição. Isso tornaria mais fácil adicionar tipos no futuro.
fonte