gpt4 book ai didi

mariadb - 无法在 Mariadb 中使用函数调用添加约束检查

转载 作者:行者123 更新时间:2023-12-05 06:22:39 28 4
gpt4 key购买 nike

我在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 Error [4025] [23000]: (conn=47) CONSTRAINT username_minlen failed for mydb.users

我的猜测是 CHAR_LENGTH 是问题的原因,因为当我像这样运行查询时:

ALTER TABLE mydb.users ADD CONSTRAINT `username_no_empty_str`
CHECK (username <> '');

这工作得很好。

我想知道我是否根本无法在 CHECK 表达式中调用任何函数或过程,但谷歌搜索没有给我满意的答案,其中大部分与 Mariadb 以外的其他 SQL 系统有关。

在 Mariadb 中调用函数在语法上是不可能的吗?

最佳答案

你应该首先检查你是否有违反它的数据:

SELECT *
FROM `mydb`.`users`
WHERE CHAR_LENGTH(username) < 6;

然后更新它:

UPDATE `mydb`.`users`
SET username = ?
WHERE CHAR_LENGTH(username) < 6;

最后应用检查约束:

ALTER TABLE mydb.users ADD CONSTRAINT `username_minlen` CHECK (CHAR_LENGTH(username) >= 6);

关于mariadb - 无法在 Mariadb 中使用函数调用添加约束检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010447/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com