DeadLock pri INSERT-u

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!

 

Avtor: DRobi, objavljeno na portalu SloDug.si (Arhiv)

Leave a comment

Please note that we won't show your email to others, or use it for sending unwanted emails. We will only use it to render your Gravatar image and to validate you as a real person.

DRobi
DRobi - torek, 08. december 2009

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!  

DRobi
DRobi - torek, 08. december 2009

SQL 2005   Lp, Robi!

Looooooka
Looooooka - torek, 24. november 2009

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.

FlashM
FlashM - torek, 17. november 2009

Katero podatkovno bazo pa uporabljaš?