Ciao, non riesco a far funzionare un vincolo come mi aspetto in postgreSQL. Da pgadmin eseguo la seguente query 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 eseguito, questo viene convertito in.
-- 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';
Mi aspetto che ciò limiti il mio input per la colonna Tipi a uno dei messaggi e-mail IRL o minuti. Tuttavia, quando si inseriscono i dati della tabella questo vincolo non riesce quando si inserisce uno di questi tipi. La colonna Tipi è di tipo carattere. Qualcuno sa come risolvere questo problema. Grazie.
CHECK (type in ('email','post','IRL','minutes')
?