gpt4 book ai didi

mysql - 插入前触发器中的子字符串、计数和连接?

转载 作者:行者123 更新时间:2023-11-30 21:37:42 25 4
gpt4 key购买 nike

我遇到了一个难题,我需要让 MySQL 数据库根据输入的新客户名称的前 3 个字符创建一个客户编号,并附加一个递增的值。例如:

表客户端:

+----+----------------------------------------------+--------------+
| id | clientName | clientNumber |
+----+----------------------------------------------+--------------+
| 1 | Accelerated Learning | ACC00 |
| 2 | Acceleration Systems | ACC01 |
| 3 | Acme,Inc. | ACM00 |

通常我会在前端的提交表单中执行此操作,但由于无法解释的原因,规范希望由数据库处理此操作。我正在尝试写这样的东西,但写不对:

触发器:

CREATE DEFINER = CURRENT_USER TRIGGER `crmdev`.`clients_BEFORE_INSERT` BEFORE INSERT ON `clients` FOR EACH ROW
BEGIN
DECLARE prefix varchar(3);
DECLARE suffix INT(3);
SET prefix = SUBSTRING(NEW.clientName,1,3);
SET suffix = (
SELECT COUNT(*),SUBSTRING(clientName,1,3) = prefix + 1;
SET NEW.clientNumber = CONCAT(prefix,suffix);
END

在此先感谢您的帮助/指导!

最佳答案

后缀 赋值中存在语法错误。您缺少 FROMWHERE 子句,您需要将 1 添加到计数中,而不是 prefix.

SET suffix = (
SELECT COUNT(*)+1
FROM clients
WHERE SUBSTRING(clientName,1,3) = prefix);

关于mysql - 插入前触发器中的子字符串、计数和连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53093515/

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