Я всегда слышу, что использование «lastInsertId» (или mysql_insert_id(), если вы не используете PDO) — это зло. В случае триггеров это очевидно, потому что он может вернуть что-то, что совершенно не является последним идентификатором, созданным вашим INSERT.
$DB->exec("INSERT INTO example (column1) VALUES ('test')");
// Usually returns your newly created ID.
// However when a TRIGGER inserts into another table with auto-increment:
// -> Returns newly created ID of trigger's INSERT
$id = $DB->lastInsertId();
Какая альтернатива?