【问题标题】:How to restrict varchar in postgres to allow only specific characters in DB?如何限制 postgres 中的 varchar 只允许 DB 中的特定字符?
【发布时间】:2020-07-09 05:52:12
【问题描述】:

我有一种情况,我需要使用 django 在 Postgres DB 的 varchar 列中只允许特定字符。

它应该限制用户输入其他字符,即使他直接使用原始 SQL 查询进行编辑。 有没有我可以在 Django 和 Postgres 中使用的验证器。

我发现这对在 Django 中使用很有帮助 - How can I make a Django form field contain only alphanumeric characters 但是如果用户使用原始 SQL 查询修改数据呢?

【问题讨论】:

标签: django regex string postgresql varchar


【解决方案1】:

在 PostreSQL 中,您可以在表中添加 CHECK 约束,例如

CREATE TEMPORARY TABLE gender (val text);

此约束将只允许值 fm int 字段 val

ALTER TABLE gender ADD CONSTRAINT gender_vals CHECK (val IN ('f','m'));

测试

INSERT INTO gender VALUES ('f'),('m');
INSERT 0 2

INSERT INTO gender VALUES ('x');
FEHLER:  neue Zeile für Relation »gender« verletzt Check-Constraint »gender_vals«
DETAIL:  Fehlgeschlagene Zeile enthält (x).

此德语错误消息仅表示违反了约束。或者,您可以使用此约束创建表,文档中对此进行了描述。

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 2022-01-05
    相关资源
    最近更新 更多