sql >> Database teknologi >  >> RDS >> Mysql

Er databaseudløsere sikre for integritetsbegrænsninger på tværs af tabel?

Svaret er triggere er ikke sikre .

Det viser sig, at udløseren virkelig ikke ser uforpligtede ændringer udført i andre transaktioner og passerer uden fejl. Det kan demonstreres sådan her

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

Begge transaktioner:

COMMIT;

Nu plays_in testamente indeholder begge indsatte poster, selvom hvis A og B blev udført i en enkelt transaktion, ville triggeren give en fejl.

Hele eksempelkilderne kan fås her



  1. Informationssystemer, data og information

  2. Udvikling af PostgreSQL til Windows, del 3

  3. django.db.utils.OperationalError Kunne ikke oprette forbindelse til serveren

  4. Left Outer Join returnerer ikke alle rækker fra mit venstre bord?