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

Posted

技术标签:

【中文标题】如何在 mariaDB 中创建检查约束以检查 char 类型的多个值?【英文标题】:how to create check constraint in maria DB for checking char type multiple values? 【发布时间】:2018-08-01 04:13:19 【问题描述】:

我在 *** 等 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) 这样的其他字符时存储在数据库中 这意味着未应用检查约束,

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

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

【问题讨论】:

【参考方案1】:

您的语法很好,版本错误。 MariaDB 10.2 之前的版本(以及所有可用的 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)

【讨论】:

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

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

如何在 MariaDb 中创建表并将数据导入 sql? [复制]

复杂的检查约束?

数据库完整性 ch.5

SQL Server:检查约束

如何使用“如果存在”在 MySQL 中创建或删除索引?