0

我是 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。

4

1 回答 1

2

触发器中的以下语句应该可以解决问题。

DECLARE neworder INTEGER;
SELECT max(`order`) + 1 INTO neworder FROM `trigger` WHERE `group` = NEW.`group`;
SET NEW.`order` = neworder;

顺便说一句,对表名或列名使用保留字不是一个好主意。
您可能需要重新考虑您的命名方案。

于 2011-10-16T15:08:04.000 回答