Znalazłem jeden za pomocą wyzwalacza:
Jeśli masz skomplikowaną serię wstawek lub aktualizacji, które muszą mieć miejsce w transakcji, możesz to zrobić w kodzie aplikacji lub
Możesz stworzyć jedną „dużą” blackhole
tabela z wystarczającą liczbą wierszy, aby pomieścić wszystkie wartości.
I utwórz wyzwalacz, taki jak:
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 ;
Jeśli dołączysz kod sprawdzania błędów, możesz nawet symulować transakcje w wyszukiwarkach, które go nie obsługują, np. MyISAM.