@BorisNaumov

Можно ли создать триггер при обновлении определённой колонки по нужному значению?

Здравствуйте.

Подскажите, пожалуйста, возможно ли создать триггер на вставку новой строки, который следил бы за обновлением одной строки отсортированной по дате добавления в определённой колонке и срабатывал бы только тогда, когда значение этой колонки равнялось бы к примеру 5.

Грубо говоря следил бы за таким запросом:
SELECT * FROM `testtable` WHERE `checkCol` = 4 ORDER BY createdAt DESC LIMIT 1


И когда checkCol обновится с 4 до 5, сработал бы триггер на вставку такого запроса:
INSERT INTO `testtable` (`id`, `checkCol`, `someData`, `createdAt`) VALUES (NULL, '1', 'data 4', current_timestamp());


Пример схемы и данных:
CREATE TABLE IF NOT EXISTS `testtable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `checkCol` tinyint(1) NOT NULL,
  `someData` varchar(255) DEFAULT NULL,
  `createdAt` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

INSERT INTO `testtable` (`id`, `checkCol`, `someData`, `createdAt`) VALUES
(1, 5, 'data1', '2020-08-28 14:24:15'),
(2, 4, 'data2', '2020-08-28 14:24:25'),
(3, 4, 'data3', '2020-08-28 14:24:35');
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Триггер не может выполнить INSERT в ту же таблицу, по которой он срабатывает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы