MySQL Triggers last_insert_id ()

У меня есть таблица 1, в которой есть id как автоинкремент. Таблица 2 имеет отношение внешнего ключа к таблице 1, в которой мне нужно, чтобы значение, полученное из таблицы 1, было вставлено в таблицу 2

-- Trigger DDL Statements DELIMITER $$ USE `baemer_emr`$$ CREATE TRIGGER `baemer_emr`.`after_insert_log` AFTER INSERT ON `baemer_emr`.`table1` FOR EACH ROW BEGIN INSERT INTO table2 VALUES (last_insert_id() , something); END$$ 

Он работает, но показывает номер раньше. Например

Вставить в таблицу 1, id = 15. В таблице 2 возвращается 14. Любые идеи?

Related of "MySQL Triggers last_insert_id ()"

В триггере у вас есть две виртуальные таблицы, называемые NEW и OLD Вы можете использовать эту виртуальную таблицу для получения вновь вставленных значений.
Виртуальная таблица OLD работает только в триггерах UPDATE и DELETE .
И триггер DELETE не имеет таблицы NEW .

 -- Trigger DDL Statements DELIMITER $$ USE `baemer_emr`$$ CREATE TRIGGER after_insert_log AFTER INSERT ON table1 FOR EACH ROW BEGIN INSERT INTO table2 VALUES (NEW.id, something); END$$ 

Обратите внимание, что NEW.id _ (предполагая, что id является полем auto_increment) _ еще не будет установлен в триггер before insert , только один из этих небольших ошибок, которых следует избегать.