Firebird i tabela na wylacznosc
Shuwar - 17-03-2007 00:02
Firebird i tabela na wylacznosc
Firebird. przykład (pominmy niescislosci w skladni):
1. SET TRANS (?) 2. 3. SELECT COUNT(*) AS X FROM TABELA 4. IF (X<10) THEN 5. BEGIN 6. INSERT INTO TABELA ... 7. END 8. 9. COMMIT
- założenie 1: TABELA nie może mieć więcej rekordów niż 10. - założenie 2: TABELA zawiera 9 rekordów - mamy dwie takie same transakcje T1 i T2 jak powyżej - w tej samej chwili T1 wykonuje linię 4. zaś T2 wykonuje linię 3. - zarówno T1 i T2 odczytają tą samą wartość X = 9, warunek 4.będzie spełniony - zarówno T1 i T2 wstawią po jednym rekordzie, a tym samym TABELA przestanie spełniać założenie pierwsze (będzie zawierała 11 rekordów)
Pytanie: jak zapobiec takiemu problemowi / jak poprawnie skonfigurowac transakcje?
Rozwiązaniem byłoby: SET TRANSACTION READ COMMITTED READ WRITE WAIT RESERVING TABELA FOR PROTECTED WRITE;
gdyby RESERVING TABELA ... blokowala inne transakcje nie tylko przed modyfikacja ale takze przez CZYTANIEM
Pozdr. Shuwar
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 17-03-2007 00:02
Shuwar wrote: > Firebird. przykład (pominmy niescislosci w skladni): > > 1. SET TRANS (?) > 2. > 3. SELECT COUNT(*) AS X FROM TABELA > 4. IF (X<10) THEN > 5. BEGIN > 6. INSERT INTO TABELA ... > 7. END > 8. > 9. COMMIT > > - założenie 1: TABELA nie może mieć więcej rekordów niż 10. > - założenie 2: TABELA zawiera 9 rekordów > - mamy dwie takie same transakcje T1 i T2 jak powyżej > - w tej samej chwili T1 wykonuje linię 4. zaś T2 wykonuje linię 3. > - zarówno T1 i T2 odczytają tą samą wartość X = 9, warunek 4. będzie > spełniony > - zarówno T1 i T2 wstawią po jednym rekordzie, a tym samym TABELA > przestanie spełniać założenie pierwsze (będzie zawierała 11 rekordów) > > Pytanie: jak zapobiec takiemu problemowi / jak poprawnie skonfigurowac > transakcje?
Zalockować tabele i dopiero wtedy odczytywać ilość wierszy.
-- P.M.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Firebird - zmiana NULL na NOT NULL
[firebird] Czym =?ISO-8859-2?Q?zast=B1pi=E6_postgresowy_inte?==?ISO-8859-2?Q?rval_=3F?=
Insert do tabeli danymi z innej tabeli Firebird
Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird)
firebird - dostep do roznych baz na podstawie nazwy usera,hasla i adresu IP
=?iso-8859-2?q?Konfiguracja_Firebirda_pod_k=B1tem_wykorzystan ia_pami=EAci?=
=?ISO-8859-2?Q?[firebird]_gdzie_si=EA_podzia=B3y_polskie_literki?=
Re: [Firebird] BDE problem z zapisem konfiguracji pod Windows Vista
=?iso-8859-2?q?firebird_i_triggery_-_logowanie_historii_zmian_zawarto=B6ci?=
=?iso-8859-2?q?[firebird]_-_jak_zastapi=E6_pole_longtext_=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plptsite.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|