Encontrou um usando um gatilho:
Se você tiver uma série complicada de inserções ou atualizações que precisam acontecer em uma transação, você pode fazer isso no código do aplicativo ou
Você pode criar um 'grande'
blackhole
tabela com linhas suficientes para conter todos os valores. E crie um gatilho como:
DELIMITER $$
CREATE TRIGGER ai_bh_table_each AFTER INSERT ON bh_table FOR EACH ROW
BEGIN
DECLARE lastid1 integer;
INSERT INTO table1 VALUES (null, new.field1, new.field2);
SELECT LAST_INSERT_ID() INTO lastid1;
INSERT INTO table2 VALUES (null, new.field3, lastid1);
....
END$$
DELIMITER ;
Se você incluir o código de verificação de erros, poderá até simular transações em mecanismos que não o suportam, como o MyISAM.