Триггеры MySQL AFTER INSERT
всегда выполняются непосредственно после инструкции INSERT
, или возможно, что возникают 2 вставки и после этого возникают два триггера?MySQL Триггер после вставки
Я пишу этот триггер, а именно:
CREATE DEFINER=`p28004_bf4`@`localhost` TRIGGER `setId`
AFTER INSERT ON `playerkills`
FOR EACH ROW
BEGIN
INSERT INTO globals() VALUES();
UPDATE playerkills SET globalId = LAST_INSERT_ID() WHERE id = ROW.id;
END
И я беспокоюсь о том, что произойдет, если операторы вставки каким-то образом чередоваться, то globalId
всегда должен быть последовательным, как глобальный уникальный идентификатор accross кратному столы.
Глобалы стол:
- идентификатор (первичный ключ, Int, Auto Increment)
Playerkills стол:
- идентификатор (первичный ключ, INT, автоматическое приращение)
- globalId (Key, Int)
- и др.
Я больше беспокоюсь о том, что произойдет с последовательностью вставок. Будет ли это выглядеть так: Insert1 -> InsertTrigger1 -> ... -> Insert2 -> InsertTrigger2? Потому что они не могут чередоваться. – skiwi
Если вы находитесь в InnoDB, данные из Insert1 не будут доступны для других запросов до тех пор, пока не завершится InsertTrigger1. Я не уверен, что это справедливо для MyISAM. – Dan
О'кей, это точно, что я хотел знать :) – skiwi