sql >> Databasteknik >  >> RDS >> Oracle

Hur hanterar man samtidiga insättningar i DB som orsakar brott mot en regel för posterna i databasen?

Problemet du beskriver heter Write Skew.

I princip tar SERIELIZEABLE transaktionsisolering hand om detta, men inte i Oracle DB . Oracle tillhandahåller bara ögonblicksbildsisolering, även när du ber om SERIALIZABLE.

I Oracle är i stort sett den enda pålitliga lösningen att använda någon form av låsning. Detta behöver inte nödvändigtvis vara ett lås på en tabellrad, du kan även använda rådgivande lås via DBMS_LOCK för det.




  1. Hur man lagrar LocalTime i viloläge

  2. Radnummer för frågeresultat grupperade efter en kolumn

  3. Använd en array i Laravel-uppdateringsfrågan

  4. DATETIMEFROMPARTS() Exempel i SQL Server (T-SQL)