MSSQL permanens row lock PHP-ből
Sziasztok!
Az alábbi témában kérném a segítségeteket:
Ugyanazon felhasználó konkurens kéréseinek megregulázása miatt row lockot szeretnék tenni a SESSION tábla releváns sorára. Szeretném, ha ez a lock a kérés kiszolgálásának kezdetekor létrejönne, és csak a kiszolgálás végeztével szűnne meg.
Mivel a lock csak egy tranzakción belül él, a kérés kiszolgálását egy "csomagoló" tranzakcióban szeretném végezni. Ha azonban az indított tranzakciót a kiszolgálás során futtatandó első query-vel nem véglegesítem vagy nem dobom el, akkor 266-os hibát kapok:
Van valami ötletetek, hogy mit lehetne ezzel kezdeni?
A tanácsokat előre is köszönöm! Üdv:
Dávid
■ Az alábbi témában kérném a segítségeteket:
Ugyanazon felhasználó konkurens kéréseinek megregulázása miatt row lockot szeretnék tenni a SESSION tábla releváns sorára. Szeretném, ha ez a lock a kérés kiszolgálásának kezdetekor létrejönne, és csak a kiszolgálás végeztével szűnne meg.
Mivel a lock csak egy tranzakción belül él, a kérés kiszolgálását egy "csomagoló" tranzakcióban szeretném végezni. Ha azonban az indított tranzakciót a kiszolgálás során futtatandó első query-vel nem véglegesítem vagy nem dobom el, akkor 266-os hibát kapok:
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing.
Van valami ötletetek, hogy mit lehetne ezzel kezdeni?
A tanácsokat előre is köszönöm! Üdv:
Dávid
Probléma megoldva
Hátha másnak egyszer még segít...
A hiba oka az volt, hogy az ADOdb minden query-t EXECUTE()-ban futtat. Ezért a csomagoló tranzakciót az mssql_query() függvénnyel indítottam és zártam le, így a hiba megszűnt, a row lock pedig az egész session kezelés alatt fennáll. Konkurens kérés esetén a második vár a sorára (viszont mivel nincsen minden tranzakció sorba rendezve, így feleslegesen nem lassú a kiszolgálás).
Köszi mindenkinek, aki gondolkozott rajta! Üdv:
Dávid