gpt4 book ai didi

mysql在触发器中使用max

转载 作者:行者123 更新时间:2023-11-28 23:24:23 25 4
gpt4 key购买 nike

我想要一个更新触发器,它会在尝试更新任何行时发出错误 > (max(IDBCRS_Testung)-100)。只要我声明一个数字,触发器本身就可以正常工作,例如

CREATE DEFINER=`root`@`%` TRIGGER `TEST`.`BCRS_BEFORE_UPDATE` BEFORE UPDATE ON `BCRS_Test` FOR EACH ROW
BEGIN
IF New.IDBCRS_Testung > (IDBCRS_Testung)-100)
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Update of record not allowed!';
END IF;
END

当然,随着身份证号码的增加,这不切实际,因此我尝试了:

CREATE DEFINER=`root`@`%` TRIGGER `TEST`.`BCRS_BEFORE_UPDATE` BEFORE UPDATE ON `BCRS_Test` FOR EACH ROW
BEGIN
IF New.IDBCRS_Testung > (Max(IDBCRS_Testung)-100)
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Update of record not allowed!';
END IF;
END

但随后出现以下错误:

ERROR 1111: 1111: 群组功能使用无效

在 Linux Mint 17.3 上使用最新的 MySQL 和工作台

TIA

最佳答案

如果您想从表中获取任何值,您需要发出适当的选择语句来获取它。

因此,在触发器的主体中(在开始之后)声明一个变量(确保您使用正确的数据类型):

declare max_testung int;

然后给它赋最大值:

SET max_testung = (SELECT max(IDBCRS_Testung) FROM BCRS_Test);

然后使用变量进行比较:

IF New.IDBCRS_Testung > (max_testung-100)

关于mysql在触发器中使用max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39958226/

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