Как ограничить varchar в postgres, чтобы разрешить только определенные символы c в БД? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть случай, когда мне нужно разрешить только указанные c символы в столбце varchar в Postgres DB, используя django.

Это должно ограничить пользователя от ввода других символов, даже если он редактировать напрямую, используя необработанные SQL запросы. Есть ли какие-либо валидаторы, которые я могу использовать как с Django, так и с Postgres.

Я нашел это полезным для использования в Django - Как я могу сделать поле формы Django только alphanumeri c символов Но что, если пользователь изменяет данные, используя необработанные SQL запросы?

1 Ответ

1 голос
/ 09 июля 2020

В Postre SQL вы можете добавить ограничение CHECK в свою таблицу, например,

CREATE TEMPORARY TABLE gender (val text);

Это ограничение допускает только значения f и m int field 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).

Это сообщение об ошибке на немецком языке говорит только о том, что ограничение было нарушено. В качестве альтернативы вы уже можете создать таблицу с этим ограничением, которое описано в документации.

...