Триггер mysql, вставляющий повторяющиеся строки

Это первый раз, когда мне нужно создать триггер в mysql. Я пытаюсь обновить небольшую таблицу журнала (4 столбца), один из которых является URL-адресом. У меня он работает, за исключением того, что я не могу понять, как предотвратить вставку 2 строк при срабатывании триггера. Я не могу создать уникальный индекс в строке URL-адреса из-за максимальной длины ключа. Есть предложения по другим средствам? Я пробовал вставить через операторы выбора и безуспешно использовать ON DUPLICATE KEY.

CREATE DEFINER=`dbuser`@`%` TRIGGER `upd_url_prod` AFTER UPDATE ON  `products` 
FOR EACH ROW BEGIN
INSERT INTO my_changes (ext_id,url,changetime)
VALUES (NEW.external_id,NEW.detail_url,NOW());

КОНЕЦ

Можете ли вы поделиться своим полным кодом создания триггера и шагами, ведущими к активации триггера. Между ними есть несколько разных процессов, которые могут заставить данные вставляться дважды.

Rando 26.10.2018 05:40

Я обновил полный код триггера. Это находится за сайтом wordpress, и я использую надстройку, чтобы попробовать импортировать продукты, а затем хочу иметь возможность регистрировать, когда он обновляется с помощью этого триггера. Переходя с SQL Server в любое время, когда мне нужно больше информации о том, что делают db или его объекты, я бы использовал профилировщик - есть ли что-нибудь подобное, что можно было бы предложить для этого здесь?

JLudt 26.10.2018 15:55
0
2
629
1

Ответы 1

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

Итак, вы на самом деле правы - когда я профилирую начальное ОБНОВЛЕНИЕ в таблице, у меня есть триггер, похоже, выполняется 2 идентичных обновления. Есть идеи, почему это должно быть? И что я могу сделать, чтобы этого избежать?

JLudt 08.11.2018 02:38

Другие вопросы по теме