嗨,我似乎无法按照我在 postgreSQL 中期望的方式工作。在 pgadmin 中,我执行以下 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';
执行时将其转换为。
-- 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';
我希望这会将我对 Types 列的输入限制为电子邮件帖子 IRL 或分钟之一。但是,当输入表数据时,当我输入其中一种类型时,此约束会失败。Types 列是字符类型。有谁知道如何解决这一问题。谢谢。
将您的约束更改为
这将由解析器转换为:
那应该做你正在看的事情。
但是我不得不怀疑这样做是否会更好:
然后添加一个外键来强制执行约束。这将使将来更容易添加类型。