sql >> Databasteknik >  >> RDS >> Mysql

Är databasutlösare säkra för integritetsbegränsningar över tabeller?

Svaret är utlösare är inte säkra .

Det visar sig att utlösaren verkligen inte ser oengagerade ändringar som görs i andra transaktioner och går igenom utan fel. Det kan demonstreras så här

Transaktion 1:

START TRANSACTION;
INSERT INTO plays_in (BetID, PlayerID) VALUES (1,1); -- query A

Transaktion 2:

START TRANSACTION;
INSERT INTO plays_in (BetID, PlayerID) VALUES (1,2); -- query B; in conflict with A, but passses

Båda transaktionerna:

COMMIT;

Nu plays_in testamente innehåller båda infogade poster även om om A och B kördes i en enda transaktion, skulle utlösaren skapa ett fel.

Hela exempelkällorna kan hämtas här



  1. Kan inte skicka parameter genom referens i MySQLi

  2. Ta bort enstaka citattecken från where_in i codeigniter

  3. matchande tabellnamn med visa tabeller

  4. ERRO 1215. MySql InnoDB