MySQL transaction-und trigger
Ich schnell durchsucht MySQL-Handbuch aber nicht finden, die genaue Informationen über meine Frage. Hier ist meine Frage: wenn ich eine InnoDB-Tabelle A mit zwei Trigger-ausgelöst durch die 'AFTER INSERT ON A' und 'NACH AKTUALISIERUNG'. Genauer gesagt, Zum Beispiel: ein trigger ist definiert als:
CREATE TRIGGER test_trigger AFTER INSERT ON A
FOR EACH ROW
BEGIN
INSERT INTO B SELECT * FROM A WHERE A.col1 = NEW.col1
END;
Können Sie ignorieren die Abfrage zwischen BEGIN
UND END
im Grunde meine ich das ausgelöst wird, fügen Sie mehrere Zeilen in Tabelle B, was auch eine InnoDB-Tabelle.
Nun, wenn ich anfing, eine Transaktion und legen Sie dann viele Zeilen, sagen: 10K Zeilen in Tabelle A. Wenn es keine trigger zugeordnete Tabelle Ein, alle diese Einsätze sind atomic, das ist sicher. Jetzt, wenn in Tabelle A steht in Verbindung mit mehreren insert - /update-Trigger für die insert - /update-viele Zeilen in Tabelle B und/oder Tabelle C, etc.. alle diese Einsätze und/oder updates sind noch alle atomic?
Ich denke, es ist immer noch Atom -, aber es ist ein wenig schwierig zu testen, und ich kann nicht finden eine Erklärung in der Bedienungsanleitung. Wer kann dies bestätigen?
- Ja sicher In der DB/2 ...
- könnten Sie darlegen, wo es erwähnt wird in der Anleitung?
- Mögliche Duplikate von Sind Transaktion auslöst?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Und von atomic, du meinst, wenn eine Anweisung in der dem trigger fehlschlägt, schlägt die gesamte Anweisung fehl. Ja -- der trigger erfolgt im Rahmen der Anweisung der Transaktion. Und Nein, natürlich, wenn es keine Transaktion gibt, dann gibt es keinen Transaktionskontext.
Und Sie sind nicht erlaubt zu Beginn einer Transaktion in der trigger.
Sollten Sie atomar sind, wenn man in einer Transaktion. Die MySQL-Seite auf Trigger hat die entsprechenden Informationen.
http://dev.mysql.com/doc/refman/5.0/en/triggers.html