SLODUG
Spletno mesto uporabniške skupine slovenskih razvijalcev programskih rešitev

DeadLock pri INSERT-u

ocenilo 0 uporabnikov
nerešeno Ta prispevek ima 0 preverjenih odgovorov | 4 odgovorov | 0 sledilcev

DRobi objavljeno v 09-22-2009 14:21 | Zabeleženo

V C# prorgamu sem pripravil funkcijo za shranjevanje računa (tj. shrani glavo, shrani postavke, shrani plačilno sredstvo). Vse skupaj je realizirano v eni transakciji, tako da se shrani vse ali pa nič! Vedno se samo dodaja, tako da ni nobenega popravljanja! To se izvaja na več blagajnah hkrati!

V posameznih enotah pride včasih do deadlock-a, ko se izvaja to shranjevanje (ponavadi ko shranjujem postavko glave - to je prvi UPDATE v funkciji)

Ali lahko kdo razloži, kakšne bi lahko bil vzrok, da pride do deadlocka pri INSERT-u, da vem kako ukrepati, da bi to odpravil!?

Lp, Robi!

 

Vsi odgovori

Katero podatkovno bazo pa uporabljaš?

Speaking C#

A lahko mal bl natancno napises.

V prvem delu si napisal da se vedno samo dodaja tako da ni popravljanja v drugem pa omenjas "prvi update v funkciji"...Ce je insert svoji transakciji, ki ni vezana na nobeno prejsnjo skoraj da ne bi smelo priti do dead locka.

Ce si pa znotraj te transakcije naredil update nekega drugega recorda in je bil ta vmes spremenjen (dovolj je ze da je padel v SELECT query) v neki drugi transakciji...potem pa zna priti do dead locka.

DRobi V odgovor na 12-08-2009 13:32 | Zabeleženo

SQL 2005

 

Lp, Robi!

DRobi V odgovor na 12-08-2009 13:35 | Zabeleženo

Funkcija mora zapisati v več tabel tj. glava računa, postavke računa, plačilna sredstva, dodatni opisi, popusti, ....).

Vse to pa je ograjeno v eno transakcijo! V te tabele je možen samo INSERT - popravljanje z UPDATE ni mogoče, mogoče pa je SELECT nad temi tabelami.

Lp, Robi!

 

Stran 1 od 1 (5 predmetov) | RSS
© 2004-2008 SLODUG
Powered by Community Server (Commercial Edition), by Telligent Systems