Одной из альтернатив является использование последовательностей, поэтому вы сами генерируете идентификатор, прежде чем выполнять вставку.
К сожалению, они не поддерживаются в MySQL, но библиотеки, такие как Adodb, могут эмулировать их, используя другую таблицу. Я думаю, однако, что сама эмуляция будет использовать lastInsertId () или эквивалентный ... но, по крайней мере, у вас меньше шансов иметь триггер для таблицы, которая используется исключительно для последовательности