Szybko przejrzałem podręcznik MySQL, ale nie znalazłem dokładnych informacji na temat mojego pytania. Oto moje pytanie: jeśli mam tabelę A InnoDB z dwoma wyzwalaczami wyzwalanymi przez "AFTER INSERT ON A" i "PO AKTUALIZACJI NA A". Dokładniej, na przykład: jeden wyzwalacz jest zdefiniowany jako:Transakcja i wyzwalacz MySQL
CREATE TRIGGER test_trigger AFTER INSERT ON A
FOR EACH ROW
BEGIN
INSERT INTO B SELECT * FROM A WHERE A.col1 = NEW.col1
END;
można ignorować zapytania między BEGIN
I END
, w zasadzie mam na myśli ten wyzwalacz będzie wstawić kilka wierszy do tabeli B, który jest również tabela InnoDB.
Teraz, gdy rozpocząłem transakcję, a następnie wstawię wiele wierszy, powiedzmy: 10K wierszy, do tabeli A. Jeśli nie ma wyzwalacza powiązanego z tabelą A, wszystkie te wstawki są atomowe, to na pewno. Teraz, jeśli tabela A jest powiązana z kilkoma wyzwalaczami wstawiania/aktualizacji, które wstawiają/aktualizują wiele wierszy do tabeli B i/lub tabeli C itd., Czy wszystkie te wstawienia i/lub aktualizacje będą cały czas atomowe?
Myślę, że nadal jest atomowa, ale jest trudna do przetestowania i nie mogę znaleźć żadnych wyjaśnień w Podręczniku. Ktoś może to potwierdzić?
Tak, na pewno W DB/2 ... –
można wskazać, gdzie wspomniano w instrukcji? – WilliamLou
Możliwy duplikat [Are triggers transaction?] (Http://stackoverflow.com/questions/37749288/are-triggers-transaction) – Sandeep