【发布时间】:2019-11-23 17:42:37
【问题描述】:
我在Ubuntu 18.04上使用Mariadb 10.4.10,工具客户端是DBeaver 6.2.5
我想充分利用 Mariadb 中的约束检查功能来确保数据完整性,因为它是从 10.2.1 开始强制执行的。
但是,每当我尝试将新约束添加到现有表中时,都会出现错误。
我尝试的查询是这样的:
ALTER TABLE mydb.users ADD CONSTRAINT `username_minlen`
CHECK (CHAR_LENGTH(username) >= 6);
而且错误信息是这样的:
SQL 错误 [4025] [23000]: (conn=47) CONSTRAINT
username_minlen失败mydb.users
我的猜测是 CHAR_LENGTH 是问题的原因,因为当我运行这样的查询时:
ALTER TABLE mydb.users ADD CONSTRAINT `username_no_empty_str`
CHECK (username <> '');
这工作得很好。
我想知道我是否根本无法调用 CHECK 表达式中的任何函数或过程,但谷歌搜索显示没有令人满意的答案,其中大多数与 Mariadb 以外的其他 SQL 系统有关。
在 Mariadb 中调用函数在语法上是不可能的吗?
【问题讨论】:
标签: mariadb constraints