Поле рассчитанных обновлений в триггере «ПОСЛЕ ВСТАВКИ» - PullRequest
1 голос
/ 07 февраля 2012

Мне нужна помощь в написании триггера MySQL.я хочу вычислить значение хеш-функции идентификатора автоинкремента и сохранить его в отдельном столбце:

create trigger hashing after insert on categories 
for each row begin
   set new.hashed = md5(CONCAT("key",`categories `.`id`));
end;

, но получаю сообщение об ошибке:

[Err] 1362 - Updating of NEW row is not allowed in after trigger

Может ли кто-нибудь помочь мне добиться того, что янеобходимость?Возможно ли это вообще с помощью триггеров?

Спасибо

1 Ответ

2 голосов
/ 07 февраля 2012

То, что вы пытаетесь сделать, не поддерживается.

Вы можете установить значение столбца «хэшированный» только в триггере BEFORE INSERT, но не в триггере AFTER INSERT.

Однако вы не можете получить доступ к значению столбца «id» с автоинкрементом в триггере BEFORE INSERT, поскольку это значение еще не известно.

Если вы решили сделать это с помощью триггера,Один из вариантов - создать отдельную таблицу для хранения хэшированного значения (вместе с внешним ключом для ссылки на таблицу «категории») и вставить в эту таблицу с помощью триггера AFTER INSERT в таблице «категории».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...