我正在尝试将产品的订单存储在数据库中,并且我希望添加的每个新产品都位于最后一个位置。基本上,我希望“rank”字段设置为MAX + 1,MAX应该是具有相同“type”的条目之间的最高值。
我尝试使用触发器,但由于MySQL不会让我这样做,因为触发器将在同一个表上执行:
**#1442 - 无法更新存储函数/触发器中的表'products',因为它已被调用此存储函数/触发器的语句使用。 **
以下是我的触发器:
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
还有其他办法吗?
由于
答案 0 :(得分:2)
你想要之前插入触发器:
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