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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在maria DB中创建检查约束以检查char类型的多个值?相关的知识,希望对你有一定的参考价值。

我正在为像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约束,

我还访问了用于Check Constraint的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)

以上是关于如何在maria DB中创建检查约束以检查char类型的多个值?的主要内容,如果未能解决你的问题,请参考以下文章

在访问和/或 DAO 中创建检查约束

复杂的检查约束?

SQL Server:检查约束

Maria DB 中发生奇怪的缓存,查询选择最小的可用 id

如何在 Grafana 中创建健康检查?

Laravel 迁移 - 在表中添加检查约束