Отговорът е тригерите не са безопасни .
Оказва се, че тригерът наистина не вижда необвързани промени, направени в други транзакции и преминава без грешка. Може да се демонстрира така
Транзакция 1:
START TRANSACTION;
INSERT INTO plays_in (BetID, PlayerID) VALUES (1,1); -- query A
Транзакция 2:
START TRANSACTION;
INSERT INTO plays_in (BetID, PlayerID) VALUES (1,2); -- query B; in conflict with A, but passses
И двете транзакции:
COMMIT;
Сега plays_in
ще съдържа и двата вмъкнати записа, въпреки че ако A и B бяха изпълнени в една транзакция, тригерът ще изведе грешка.
Целите примерни източници могат да бъдат намерени тук