Как создать ограничение проверки в БД Мария для проверки нескольких значений типа 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)