如何在 mariaDB 中创建检查约束以检查 char 类型的多个值?

how to create check constraint in maria DB for checking char type multiple values?

我正在为 Whosebug 等 QuestionAnswer 网站的大学项目工作,但我在 Maria DB table 中创建 table 时遇到了一个问题

我使用最新版本的 XAMPP,默认情况下使用 maria DB 而不是 MYSQL

所以我想创建 post table,其中包含 post 类型 (p_type),例如(问题、答案、评论),

我使用下面的代码

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

我使用 InnoDB 存储引擎,Maria DB 版本是 10.1.30
但是当我插入其他字符时(s,z,x)存储在数据库中 这意味着未应用检查约束,

我还访问了 Maria DB 手册中的检查约束,但没有任何与 Char 类型相关的示例。

所以任何答案将不胜感激 提前致谢

你的语法没问题,版本不对。 10.2 之前的 MariaDB 版本(以及 MySQL 的所有可用版本)解析 CHECK 子句,但完全忽略它。 MariaDB 10.2 performs the actual check:

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)