gpt4 book ai didi

mysql - 将最大值设置为默认值

转载 作者:行者123 更新时间:2023-11-29 08:00:06 25 4
gpt4 key购买 nike

我正在尝试将产品的顺序存储在数据库中,并且我希望添加的每个新产品都位于最后一个位置。基本上,我希望将“rank”字段设置为 MAX + 1,并且 MAX 应该是具有相同“类型”的条目之间的最高值。

我尝试使用触发器来执行此操作,但是 MySQL 不允许我这样做,因为触发器将在同一个表上执行:

**#1442 - 无法更新存储函数/触发器中的表“产品”,因为它已被调用此存储函数/触发器的语句使用。 **

这是我的触发器:

CREATE TRIGGER `productInsert` 
AFTER INSERT ON `products`
FOR EACH ROW
BEGIN
UPDATE products
SET rank = (SELECT MAX(rank)
from products
where type_id = NEW.type_id)
where id = NEW.id

还有其他办法吗?

谢谢

最佳答案

您想要一个before插入触发器:

CREATE TRIGGER `productInsert`
BEFORE INSERT ON `products`
FOR EACH ROW
BEGIN
set NEW.rank = (select max(rank) + 1
from products p
where p.type_id = NEW.type_id
);
END

关于mysql - 将最大值设置为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24050577/

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