Hallo,
ich entwickel gerade ein Script und habe folgendes Problem:
In einem Schritt möchte ich aus einer Datenbank einen bestimmten Eintrag auswählen. Jeder Eintrag hat einen Status (0...3) und der ausgewählte Eintrag soll den Status 0 haben. Direkt danach ändere ich in einem zweiten Schritt den Status auf 1.
Wie löse ich das am klügsten, ohne das während Schritt 1 und Schritt 2 eine Race Condition auftreten kann?
Meine SQL Statements sehen aktuell wie folgt aus:
Schritt 1:
Schritt 2:
Am besten wäre, beide Schritte in einen zu verschmelzen, also das ich den Status update und gleichzeitig die ID als Rückgabe selektiere. Ist dies möglich?
Gruß Carny
ich entwickel gerade ein Script und habe folgendes Problem:
In einem Schritt möchte ich aus einer Datenbank einen bestimmten Eintrag auswählen. Jeder Eintrag hat einen Status (0...3) und der ausgewählte Eintrag soll den Status 0 haben. Direkt danach ändere ich in einem zweiten Schritt den Status auf 1.
Wie löse ich das am klügsten, ohne das während Schritt 1 und Schritt 2 eine Race Condition auftreten kann?
Meine SQL Statements sehen aktuell wie folgt aus:
Schritt 1:
Code:
SELECT * FROM codes WHERE state='0' LIMIT 1,1
Schritt 2:
Code:
UPDATE codes SET state='1' WHERE id=$id
Am besten wäre, beide Schritte in einen zu verschmelzen, also das ich den Status update und gleichzeitig die ID als Rückgabe selektiere. Ist dies möglich?
Gruß Carny