sách gpt4 ai đã đi

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

In lại 作者:行者123 更新时间:2023-12-05 06:22:39 28 4
mua khóa gpt4 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.người sử dụng

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

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

这工作得很好。

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

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

1 Câu trả lời

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

LỰA CHỌN *
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
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com