Как создать ограничение проверки в БД Мария для проверки нескольких значений типа char?

Я работаю над проектом колледжа на сайте QuestionAnswer, например, Stackru, но у меня возникла одна проблема при создании таблиц в Maria DB

я использую последнюю версию XAMPP, которая по умолчанию использует Мария БД вместо MYSQL

поэтому я хочу создать таблицу сообщений, которые содержат тип сообщения (p_type), как (вопрос, ответ, комментарий),

я использую следующий код

create table post
(
 p_type char(1) check(p_type = 'q' OR p_type = 'a' OR p_type = 'c')
);

и я использую движок хранения InnoDB и Мария DB версия 10.1.30
но когда я вставляю другой символ, такой как (s,z,x), сохраняется в базе данных, что означает, что проверочное ограничение не применяется,

Я также посетил руководство Maria DB по проверке ограничений, но нет никакого примера, связанного с типом Char.

поэтому любой ответ будет оценен спасибо заранее

1 ответ

Решение

Ваш синтаксис в порядке, версия неверна. Версии MariaDB до 10.2 (и все доступные версии MySQL) анализируют CHECK оговорка, но игнорируйте это полностью. MariaDB 10.2 выполняет фактическую проверку:

MariaDB [test]> create table post ( p_type char(1) check(p_type = 'q' OR p_type = 'a' OR p_type = 'c') );
Query OK, 0 rows affected (0.18 sec)

MariaDB [test]> insert into post values  ('s');
ERROR 4025 (23000): CONSTRAINT `p_type` failed for `test`.`post`

MariaDB [test]> insert into post values  ('q');
Query OK, 1 row affected (0.04 sec)
Другие вопросы по тегам