我正在为像StackOverflow这样的QuestionAnswer网站的大学项目工作,但我在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)存储在数据库中时
这意味着不应用检查约束,
我还访问了用于Check Constraint的Maria DB手册,但没有任何与Char类型相关的示例。
所以任何答案都将不胜感激 提前谢谢
答案 0 :(得分:1)
你的语法很好,版本错了。 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)