[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AW: Exclusive-lock i transakcja





Tomasz Fidecki wrote:

> Herr Maciej Frackiewicz wrote:
> >
> > Informacie znalezione w Knowledge Base (www.progress.com/support/)
> > mfg
> >
> > Maciej Frackiewicz
> > mfrackie@comilex.com
> >
> [...]
> >  If there is an EXCLUSIVE-LOCK on one of the
> > buffers in the FOR EACH statement, and that buffer is scoped to the
> > FOR EACH block, then it will also default to TRANSACTION.
> [...]
>
> Problem polega na tym, że to co powyżej w naszym kontek¶cie nie jest prawd± :-)
>

To akurat nie zachodzi w "naszym kontekscie".
Moim zdaniem, to co przeslal Pan Maciej wyjasnia sprawe. Tylko ze tak jest napisane
w Knowledge Base,
natomiast w dokumentacji jest nie az tak precyzyjnie (wrecz inaczej).
W naszym kontekscie zachodzi analogiczna sytuacja jak w  "Example 1" - czyli, ze
bufor w wewnetrznej procedurze jest wziety z procedury zewnetrznej, zatem jego
zakres nie jest zwiazany z blokiem FOR EACH w wewnetrznej procedurze (co mozna
sprawdzic na listingu).
> Example 1:
>
> FIND FIRST customer NO-LOCK.
> FOR EACH customer EXCLUSIVE-LOCK:
>   MESSAGE TRANSACTION.
>END.
>(...)
>In the first example, the CUSTOMER buffer is not scoped to the FOR EACH block
>and the keyword TRANSACTION was not used on the FOR EACH statement,
>and there were no UPDATE/DELETE/CREATE statements within the block, so
>so it does not default to TRANSACTION.

Mozna tylko dodac - dlaczego ?
Osobiscie jestem zwolennikiem nie polegania na roznych domyslnych wlasciwosciach
jezyka Progress 4GL - wymyslonych moim zdaniem glownie w celu obrony bazy danych
przed
nieswiadomym uzytkownikiem, ktory nie ma pojecia o transakcjach. Mechanizmy te
realizuja zasade "zdroworozsadkowego" minimum - czyli zakres transakcji
(rozpoznawany przez kompilator i ten realizowany w czasie wykonania) powinien sie
ograniczac do najwezszego bloku, jaki ma "szanse" zmodyfikowac baze. Dla wygody
przyjeto, ze FIND ...EXCLUSIVE jest juz wystarczajacym powodem.

Zaprogramowac transakcje takie jak sie chce - jesli chodzi o zakres - mozna w
prosty sposob -
stosujac do tego celu zawsze i wylacznie blok
DO TRANSACTION:
END.


Marek Prokop

------
Strona WWW:     http://pluton.pol.lublin.pl/pugpl/index.htm
Obsluga listy:  listserv@zeto.bydgoszcz.pl
Archiwum listy: http://www.zeto.bydgoszcz.pl/progress/index.html
------