Использование триггеров mysql для обновления полей в составе составного первичного ключа - PullRequest
0 голосов
/ 16 октября 2011

Я новичок в триггерах 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 Ответ

2 голосов
/ 16 октября 2011

Следующие операторы внутри триггера должны помочь.

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

Кстати, не рекомендуется использовать зарезервированные слова для имен таблиц или столбцов.
Возможно, вы захотите пересмотреть свою схему именования.

...