[MsSQL]Jaka blokada tabeli dla pobrania następnego nr faktury
DariuszK - 04-11-2005 23:16
[MsSQL]Jaka blokada tabeli dla pobrania następnego nr faktury
Witam serdecznie
Chciałbym spytać jaką blokadę w transakcji powinienem użyć jeżeli chciałbym dodać nowy nr. faktury do tabeli faktury.
W transakcji 1) Pobieram nr ostatniej faktury w roku (w tym momencie musiałbym całkowicie zablokowac odczyt z tabeli poniważ jeżeli trafi sie jeszce jedna operacja zapisu faktury to zostanie pobrany ten sam numer co z kolei zaowocuje wpisaniem dwóch faktur, ktos może powiedzieć że to sie może nie zdażyć , tylko co ja powiem klientowi który pod koniec roku będzie miał dwa takie same numery faktur) 2) Incrementuję jej numer o jeden 3) Zapisuje w tabeli
Czy może dodać sztuczne pole rok oraz dodać zakaz duplikatów dla połączonych kolumn roku i numeru faktury (plus znacznik proformy i korekty)?
Z góry dziękuję za odpowiedź darek
=?ISO-8859-2?Q?Cezary_Gr=B1dys?= - 04-11-2005 23:16
=?ISO-8859-2?Q?Re=3A_=5BMsSQL=5DJaka_blokada_tabeli_dla_?==?I SO-8859-2?Q?pobrania_nast=EApnego_nr_faktury?=
Użytkownik DariuszK napisał: > Witam serdecznie > > Chciałbym spytać jaką blokadę w transakcji powinienem użyć jeżeli chciałbym > dodać nowy nr. faktury do tabeli faktury. > > W transakcji > 1) Pobieram nr ostatniej faktury w roku (w tym momencie musiałbym > całkowicie zablokowac odczyt z tabeli poniważ jeżeli trafi sie jeszce jedna > operacja zapisu faktury to zostanie pobrany ten sam numer co z kolei > zaowocuje wpisaniem dwóch faktur, ktos może powiedzieć że to sie może nie > zdażyć , tylko co ja powiem klientowi który pod koniec roku będzie miał > dwa takie same numery faktur) > 2) Incrementuję jej numer o jeden > 3) Zapisuje w tabeli > > > Czy może dodać sztuczne pole rok oraz dodać zakaz duplikatów dla > połączonych kolumn roku i numeru faktury (plus znacznik proformy i > korekty)? >
To chyba będzie rozsądne. Baza będzie sama bronić się przed podwójnymi wpisami, nawet gdyby aplikacja klienta miała jakiś błąd.
-- Cezary Grądys czarekgr@wa.onet.pl
Grzesiek G. - 04-11-2005 23:16
=?ISO-8859-2?Q?Re=3A_=5BMsSQL=5DJaka_blokada_tabeli_dla_?==?I SO-8859-2?Q?pobrania_nast=EApnego_nr_faktury?=
DariuszK napisał(a): > Witam serdecznie > > Chciałbym spytać jaką blokadę w transakcji powinienem użyć jeżeli chciałbym > dodać nowy nr. faktury do tabeli faktury. > > W transakcji > 1) Pobieram nr ostatniej faktury w roku (w tym momencie musiałbym > całkowicie zablokowac odczyt z tabeli poniważ jeżeli trafi sie jeszce jedna > operacja zapisu faktury to zostanie pobrany ten sam numer co z kolei > zaowocuje wpisaniem dwóch faktur, ktos może powiedzieć że to sie może nie > zdażyć , tylko co ja powiem klientowi który pod koniec roku będzie miał > dwa takie same numery faktur) > 2) Incrementuję jej numer o jeden > 3) Zapisuje w tabeli > >
TABLOCKX.
> Czy może dodać sztuczne pole rok oraz dodać zakaz duplikatów dla > połączonych kolumn roku i numeru faktury (plus znacznik proformy i > korekty)? Zamiast sztucznego pola proponuję kolumnę wyliczaną.
Pozdrawiam
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
Vez do Han - 04-11-2005 23:16
=?iso-8859-2?Q?Re:_=5BMsSQL=5DJaka_blokada_tabeli_dla_pobrani a_nast=EApne?==?iso-8859-2?Q?go_nr_faktury?=
Użytkownik "DariuszK" <dareczek_k@o2.pl> napisał w wiadomości news:dk44n1$13p$1@polsl.gliwice.pl... > Witam serdecznie > > Chciałbym spytać jaką blokadę w transakcji powinienem użyć jeżeli chciałbym > dodać nowy nr. faktury do tabeli faktury.
> W transakcji > 1) Pobieram nr ostatniej faktury w roku (w tym momencie musiałbym > całkowicie zablokowac odczyt z tabeli poniważ jeżeli trafi sie jeszce jedna > operacja zapisu faktury to zostanie pobrany ten sam numer co z kolei > zaowocuje wpisaniem dwóch faktur, ktos może powiedzieć że to sie może nie > zdażyć , tylko co ja powiem klientowi który pod koniec roku będzie miał > dwa takie same numery faktur) > 2) Incrementuję jej numer o jeden > 3) Zapisuje w tabeli > [...] Mam takie pytanko. Po co pobierasz ten numer (operacja nr1)? Obrabiasz go jakoś w aplikacji? Pytasz operatora? Jak nie to może wystarczy w chwili wstawiania insert into faktura(pole_z_numerem,....) values(select max(pole_z_numerem)+1 from faktura where ...,....) Gdzie w warunku where są zaszyte zasady numeracji.
DariuszK - 04-11-2005 23:16
> Po co pobierasz ten numer (operacja nr1)? Obrabiasz go jakoś w aplikacji? > Jak nie to może wystarczy w chwili wstawiania > insert into faktura(pole_z_numerem,....) To by było najlepsze ale miałem już takie rozwiązanie w systemie rezerwacji przez skrypty asp i zdażało sie że wysylano do subskrybentów ofertę na promocje i wtedy wiekszość rezerwowała przez stronę a wtedy zdażało sie że w tym samym momencie uruchamiane było kilkadziesiąt skryptów które powodowaly doblowanie rekordów.
DariuszK - 04-11-2005 23:16
Wielkie dzięki !
DariuszK - 04-11-2005 23:16
Wielkie dzieki !
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
[MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?=
MSSQL Express czy Oracle Express
MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
[MSSQL 2000] =?ISO-8859-2?Q?wywo=B3anie_procesu_z_poziomu_?==?ISO-8859-2?Q?job=27a?=
[MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?=
Pobierananie danych z innej bazy danych w MSSQL
Migracja MSSQL 2005 CTP na 2005 Express
zanotowane.pldoc.pisz.plpdf.pisz.plets2.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 |
|