使用mysql触发器更新复合主键的字段

时间:2011-10-16 14:51:55

标签: mysql triggers composite-primary-key

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

这是表格与一些样本数据的外观:
enter image description here

我想要创建的触发器应确保对于添加了给定组的每个新记录,使用正确的订单索引更新订单字段。

因此,如果我要在组1中添加新记录,则订单字段将自动更新为下一个订单,对于给定的示例,该订单将为4。

1 个答案:

答案 0 :(得分:2)

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

DECLARE neworder INTEGER;
SELECT max(`order`) + 1 INTO neworder FROM `trigger` WHERE `group` = NEW.`group`;
SET NEW.`order` = neworder;
顺便说一句,对表格或列名使用保留字并不是一个好主意 您可能想重新考虑您的命名方案。