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"><<a href="mailto:jkeresztes@vati.hu" target="_blank">jkeresztes@vati.hu</a>></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:"Courier New"">ÁLLJ !<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">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:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Joe<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> 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> <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, <<a href="mailto:jkeresztes@vati.hu" target="_blank">jkeresztes@vati.hu</a>>:<u></u><u></u></p>
<div><div><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Vagyis konkrétan ezt kell csinálni:</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""> </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:"Courier New";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:"Courier New";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:"Courier New";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:"Courier New";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:"Courier New";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:"Courier New";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:"Courier New";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"> </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"> </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:"Courier New""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""> </span><u></u><u></u></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> 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"> <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> <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>