Hogyan lehet megszerezni az adatokat commit nélkül?
Sziasztok
Van 3 db InndoDB táblám (tranzakcio kezelés miatt)
ugyfel,szerzodes,termek
most ugy néz kia dolog van egy nagy form amiről az adatok bekerulnek a 3 táblába.
1. sql beteszi az ugyfel adatait az ugyfeltáblába
2. sql kreálna egy szerződés számot + berakná az ügyfél ID-t
3. sql a formról bekerülnek a termék adatai + a szerzodés ID
Tehát függnek egymástól a lekérdzések.Amig nincs commit az elsőn addig a 2. sql nem kapja meg az ugyfel ID-t
és igy tovább.
Hogyan lehet megszerezni az adatokat commit nélkül?
Köszönöm a segítséget.
■ Van 3 db InndoDB táblám (tranzakcio kezelés miatt)
ugyfel,szerzodes,termek
most ugy néz kia dolog van egy nagy form amiről az adatok bekerulnek a 3 táblába.
1. sql beteszi az ugyfel adatait az ugyfeltáblába
2. sql kreálna egy szerződés számot + berakná az ügyfél ID-t
3. sql a formról bekerülnek a termék adatai + a szerzodés ID
Tehát függnek egymástól a lekérdzések.Amig nincs commit az elsőn addig a 2. sql nem kapja meg az ugyfel ID-t
és igy tovább.
Hogyan lehet megszerezni az adatokat commit nélkül?
Köszönöm a segítséget.
last_insert_id
2. létrehozod a szerződés számot az ügyfél id-val (ha ez egy insert, akkor last_insert_id-val lekéred a szerződés számot is)
3. eltárolod a form adatait a szerződés id-val
4. commit/rollback
A last_insert_id lekérdezése a tranzakcióban helyesen fogja visszaadni az id-ket.
én is
Közben én is utána jártam.
Igen ahogy te is montad LAST_INSERT ID()-t elkérem.
Ez mennyire biztonságos módszer? voltak meglepő dolgok.
Lenne még kérdéesem
A SELECT LAST INSERT_ID() result nem tér vissza true-va
illetve a tranzakcio kezelésnál hogy jobb vizsgálni az értéket?
1. minden select után
2. az osszes select végén, ha minden select true akkor commit,ha nem rollback.
Köszönöm
Commit / Rollback
Biztonságos
A last_insert_id az utolsó insert által használt autoincrement mező értékét adja vissza, tehát minden insert után kérd le, ha fel akarod használni az értéket. rollback akkor kell, ha a tranzakciódban valamelyik insert hibára fut (feltételezem a client_id és contract_id az foreign key-ként van megadva, így ha rossz kulcsot akarsz beírni, akkor constraint violation-re kell futniuk)