Ich habe einen Nodejs Web-Service mit MariaDB-Server und ca. 500 täglich aktive Benutzer in meiner App.MariaDB mehrere identische Zeile auch bei Verwendung REPEATABLE READ Transaktion
In meinem Code verwende ich eine Transaktion wie folgt:
START TRANSACTION
-- select to find out the existence of a row --
-- if the row doesn't exist, a new row inserted --
COMMIT
diese Transaktion in keiner doppelten Zeile eingefügt führen soll, aber es funktioniert nicht.
Ich denke, das passiert, wenn 2 Anfragen mit verschiedenen Sitzungen zur gleichen Zeit ankommt und sehen, dass die Zeile nicht existiert und dann beide Sitzungen es einfügen.
Die Transaktionsisolationsstufe MariaDB ist REPEATABLE-READ.
Ist dies wegen REPEATABLE READ Isolation-Level?
Wie kann man Lese- und Schreibvorgänge exklusiv sperren, wenn eine andere Sitzung dieselbe Zeile lesen kann?