Konkurens select, insert megakadályozása míg az adott insert folyik
Sziasztok!
PHP-ben fejlesztek egy leltár programot amiben van egy leltári szám, ami 2 féle képpen generálódik:
1. Év+Hónap+futó sorszám. Pl.: 11050001, 11050002, 11050003...
2. Csak futó sorszám, Pl.: 00000001, 00000002, 00000003...
Ezen az oszlopon index van, és mellette van egy auto increment primary key is.
A Probléma a következő: ebbe a táblába sok insert történik egy időben, mert a php progit sokan használják egyszerre. A php egy mysql userrel csatlakozik a mysql-hez és hajtja végre a lekérdezéseket. Ebben az oszlopban adott esetben előfordulhat duplikáció, mert van olyan hogy egy leltári számon kell tárolnom szorosan összefüggő termékeket. Ez miatt nem lehet unique, illetve a fentebb leírt leltári szám generálás miatt auto increment sem.
Amikor új elemet viszek a leltárba akkor ki kell olvasnom az adott számozási eljárásnak megfelelő legmagasabb leltári számot, majd az INSERT-nél ehhez adok egyet és beszúrom a többi adattal együtt. Ezzel az a probléma hogy ha az adott pillanatban más is elindít egy beszúrást, akkor ugyanazt a legmagasabb leltári számot fogja beolvasni, majd növelni egyel mint a konkurens user, és így ugyanarra a leltári számra kerülhet 2 teljesen külömböző termék.
Hogy lehet ezt kiküszöbölni?
- Tovább (Konkurens select, insert megakadályozása míg az adott insert folyik)
- 4055 megtekintés