<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Ezt úgy szokás megoldani, hogy van egy erre a célra dedikált oszlopod legyen a neve most lockedby ami NULL értékű ha senki nem foglalkozik az adott rekorddal. Minden kliensnek van egyedi azonosítója amivel kitölti ezt az oszlopot ha lockolni akarja azt a recordot. Ezt úgy teszi meg, hogy update-eli a saját id-val majd select-ál a saját id-ra, hogy tényleg sikerült-e illetve neki sikerült-e update-elni. &nbsp;Amikor kész van akkor pedig ismát NULL-ra update-eli. Biztos van neki szép neve is de azt nem tudom.<div>&nbsp;Egyébként működik ez akkor is ha egyszerre nem egy hanem több rekordot is szeretnél lockolni.</div><div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div>Verhás István<br>JIRA szakértő<br>Verhás &amp; Verhás Szoftver Manufaktúra Kft.<br><a href="mailto:istvan@verhas.com">istvan@verhas.com</a><br>t: +36(30)3997117<br>skype: verhasi</div></span>
</div>
<br><div><div>On Sep 14, 2012, at 1:26 PM, Vig, Balázs wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Ezt tudom, de ha lefut az update (márpedig több commit is van), akkor utána a várakozó update is lefut. Vagyis nem sikerült eltiltanom a másik klienst a sor kezelésétől, csak feltartottam egy kicsit.<br><br>Üdv:<br><b>Vig Balázs<br>
</b>
<br><br><div class="gmail_quote">2012. szeptember 14. 12:59 Keresztes Jozsef írta, <span dir="ltr">&lt;<a href="mailto:jkeresztes@vati.hu" target="_blank">jkeresztes@vati.hu</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div link="blue" vlink="purple" lang="HU"><div><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">ÁLLJ !<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u>&nbsp;<u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">Ha egy sorra kiadsz egy UPDATE-et azt a sort automatikusan lock-olja az adatbázis, addig nem tud vele senki szórakozni amíg egy commit vagy rollback-et végre nem hajt az eljárásod. Ez teljesen automatikus, próbáld ki.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u>&nbsp;<u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">Joe<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u>&nbsp;<u></u></span></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> Vig, Balázs [mailto:<a href="mailto:balazs.vig@datasolutions.hu" target="_blank">balazs.vig@datasolutions.hu</a>] <br>
<b>Sent:</b> Friday, September 14, 2012 12:56 PM<br><b>To:</b> Java lista<br><b>Subject:</b> Re: [Javalist] Adatbázis lock<u></u><u></u></span></p><div><div class="h5"><p class="MsoNormal"><u></u>&nbsp;<u></u></p><p class="MsoNormal" style="margin-bottom:12.0pt">
De nekem row lock kell: csak az adott sorral ne szórakozzon senki, a többi sort lehet szerkeszteni.<br><br>Most azon gondolkodom, hogy oracle alatt a dbms_lock-kal létrehozok egy lockot: myapplock[rowid] néven, és amikor másik session akar lokkolni, akkor ellenőrzi az ilyen id-jű foglalás meglétét: ha nem sikerül lokkolni, akkor keressen magának másik elfoglaltságot ;)<br>
<br>Egy-egy folyamat percekig is eltarthat (extrém esetben órák), ilyenkor fontos, hogy azért más feladat tudjon haladni. Mivel ilyen hosszú időről beszélünk, és a folyamat közben lehet (van) commit is, ezért nem állíthatom be, hogy a tranzakció végén automatikusan oldja a lokkot, azt nekem kell manuálisan a folyamat végén. Ez OK, de mi van akkor, ha egy kliens elszáll? Ilyenkor a lock megmarad, de nem lesz senki, aki feloldja. Tehát kell valami takarító mechanizmus is....<br>
<br>Vagy simán csak megmondom, hogy egyszerre csak egy klienst futtassanak? ;) (nem kéne...)<br clear="all"><br>Üdv:<br><b>Vig Balázs<br></b><br><br><br><br><u></u><u></u></p><div><p class="MsoNormal">2012. szeptember 14. 12:15 Keresztes Jozsef írta, &lt;<a href="mailto:jkeresztes@vati.hu" target="_blank">jkeresztes@vati.hu</a>&gt;:<u></u><u></u></p>
<div><div><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">Vagyis konkrétan ezt kell csinálni:</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">lock</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;background:white" lang="EN-US"> </span><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">table</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;background:white" lang="EN-US"> szemafor </span><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">in</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;background:white" lang="EN-US"> </span><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">exclusive</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;background:white" lang="EN-US"> </span><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">mode;</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;background:white" lang="EN-US">update table_a …;</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none">
<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;background:white" lang="EN-US">insert into table_b …;</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;background:white" lang="EN-US">…</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">commit;</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none">
<span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">&nbsp;</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">Jelöljetek ki egy táblát (a példában “szemafor”), de lehet máshogy is…</span><u></u><u></u></p>
<div><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">&nbsp;</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none">
<span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">Joe</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;</span><u></u><u></u></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> Vig, Balázs [mailto:<a href="mailto:balazs.vig@datasolutions.hu" target="_blank">balazs.vig@datasolutions.hu</a>] <br>
<b>Sent:</b> Friday, September 14, 2012 12:05 PM<br><b>To:</b> Java lista<br><b>Subject:</b> [Javalist] Adatbázis lock</span><u></u><u></u></p><p class="MsoNormal">&nbsp;<u></u><u></u></p></div><p class="MsoNormal" style="margin-bottom:12.0pt">
Sziasztok!<u></u><u></u></p><div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><br><br>Van egy Hibernate alapú kliensem, ami több példányban is futhat. A kliens feladata, hogy az adatbázis objektumokon műveleteket végezzen.<br>
Hogyan lehet azt garantálni, hogy egy objektummal csak az egyik kliens foglalkozhasson: ha az egyik már elkezdett dolgozni rajta, akkor másik már ne tudjon.<br><br>Támogatja-e ezt valahogy a hibernate, vagy a jdbc? (eddig nem találtam erre semmit). Vagy nekem kell valami mókolnom az adatbázisban?<br clear="all">
<br>Üdv:<br><b>Vig Balázs</b><u></u><u></u></p></div></div></div></div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>_______________________________________________<br>Javalist mailing list<br><a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><u></u><u></u></p></div><p class="MsoNormal"><u></u>&nbsp;<u></u></p></div></div></div></div>
<br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br>
_______________________________________________<br>Javalist mailing list<br><a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>http://lists.javaforum.hu/mailman/listinfo/javalist<br></blockquote></div><br></div></body></html>