我是mysql触发器的新手,我正在试图弄清楚如何为以下情况创建触发器。
我有一个具有以下结构的表:
CREATE TABLE `trigger` (
`group` int(3) NOT NULL,
`order` int(3) NOT NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`group`,`order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是表格与一些样本数据的外观:
我想要创建的触发器应确保对于添加了给定组的每个新记录,使用正确的订单索引更新订单字段。
因此,如果我要在组1中添加新记录,则订单字段将自动更新为下一个订单,对于给定的示例,该订单将为4。
答案 0 :(得分:2)
触发器内的以下语句应该可以解决问题。
DECLARE neworder INTEGER;
SELECT max(`order`) + 1 INTO neworder FROM `trigger` WHERE `group` = NEW.`group`;
SET NEW.`order` = neworder;
顺便说一句,对表格或列名使用保留字并不是一个好主意
您可能想重新考虑您的命名方案。