0

我为我的 QuestionAnswer 网站(如 StackOverflow)的大学项目工作,但我在 Maria DB 中创建表时遇到了一个问题

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

所以我想创建包含帖子类型(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 类型相关的示例。

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

4

1 回答 1

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)
于 2018-02-21T16:43:21.037 回答