gpt4 book ai didi

MySQL 触发 If 语句并与查询进行比较

转载 作者:行者123 更新时间:2023-11-29 19:15:35 28 4
gpt4 key购买 nike

我可以在 5.6 MySQL 环境中使用一些关于触发器的指导。我想创建一个触发器,如果​​发现具有相同速度的电脑的价格较低,则该触发器会停止更新。

架构是产品(制造商型号、类型)PC(型号、速度、内存、硬盘、价格)笔记本电脑(型号、速度、内存、硬盘、屏幕、价格)打印机(型号、颜色、类型、价格)

粗体是主键。

我最好的尝试是

delimiter //
create trigger trigger2 before update on pc
for each row
begin
if (new.price < (min(price) from pc where speed=new.speed))
then signal sqlstate '45000' set message_text = 'lower price found';
end if;
end;//
delimiter ;

但我实际上收到了有关 if 条件的语法错误。 http://rextester.com/TJT52527这是一个示例数据集。欢迎任何指导,谢谢。

最佳答案

这是具有正确语法的触发器:

DELIMITER //
CREATE TRIGGER trigger2 BEFORE UPDATE ON pc FOR EACH ROW
BEGIN

IF (NEW.price < (SELECT MIN(price) FROM pc WHERE speed = NEW.speed)) THEN
signal sqlstate '45000' set message_text = 'lower price found';
END IF;
END //
DELIMITER ;

演示:

以更高的价格更新有效:

mysql> UPDATE pc SET price = 2000 WHERE speed = 2.20;
Query OK, 2 rows affected (0.03 sec)
Rows matched: 2 Changed: 2 Warnings: 0

以较低价格更新失败:

mysql> UPDATE pc SET price = 200 WHERE speed = 2.20;
ERROR 1644 (45000): lower price found
mysql>

PS:非常感谢 SQL 模式,它有很大帮助

关于MySQL 触发 If 语句并与查询进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743614/

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