Het antwoord is triggers zijn niet veilig .
Het blijkt dat de trigger echt geen niet-vastgelegde wijzigingen in andere transacties ziet en foutloos doorgaat. Het kan zo worden gedemonstreerd
Transactie 1:
START TRANSACTION;
INSERT INTO plays_in (BetID, PlayerID) VALUES (1,1); -- query A
Transactie 2:
START TRANSACTION;
INSERT INTO plays_in (BetID, PlayerID) VALUES (1,2); -- query B; in conflict with A, but passses
Beide transacties:
COMMIT;
Nu plays_in
will bevat beide ingevoegde records, hoewel als A en B in een enkele transactie zouden worden uitgevoerd, de trigger een fout zou veroorzaken.
De hele voorbeeldbronnen kunnen hier worden verkregen