Autoinkrementacja PostgreSQL
Grzesiek - 14-05-2006 00:48
Autoinkrementacja PostgreSQL
Witam
Mam pytanie:
Prosze o informacje w jaki sposob moglbym zrobic autoinkrementacje kolumny w takis sposob aby kolejne wiersze zwiekszaly sie o 1. (kolumna L.P.) ?
Wiem ze mozna zastosowac typ "serial" jednak , nie wiem do konca jak zrobic, zeby np inkrementacja zaczela sie od poczatku (1,2,3.....itd) po osiagnieciu jakiejs wartosci w innej kolumnie (np zmiana roku).
Dodatkowo zauwazylem ze wartosc ta mozna zmienic w sekwencjach. Ale czy jest jakis inny sposob ? a jesli nie to jak to mozna zastosowac przy uzyciu np zeos w delphi ?
Nie wiem czy dobrze sie wyrazilem, jestem poczatkujacy , wiec prosze o wyrozumialosc
Za wszelkie informacje z gory dziekuje
Grzegorz
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 14-05-2006 00:48
Grzesiek wrote: > Witam > > Mam pytanie: > > Prosze o informacje w jaki sposob moglbym zrobic autoinkrementacje kolumny w > takis sposob aby kolejne wiersze zwiekszaly sie o 1. (kolumna L.P.) ? > > Wiem ze mozna zastosowac typ "serial" jednak , nie wiem do konca jak zrobic, > zeby np inkrementacja zaczela sie od poczatku (1,2,3.....itd) po osiagnieciu > jakiejs wartosci w innej kolumnie (np zmiana roku).
Przy zmianie roku przestawić sekwencje powiązaną z danym serialem (popatrz na definicje tabeli). Ale to może nie nadawać sie do LP, bo nie gwarantuje niepowstawania dziur w numeracji.
Prosto LP możesz generować przez lockowanie tabeli w trybie access exclusive i wtedy sprawdzenie maksymalnej lp i wstawianie tej wartości +1. Ale jest to rozwiązanie bardzo niewydajne - nie pozwala na równoczesne odczyty w pozostałych transakcjach. Ale jak masz jakąś prostą aplikacje to wystarczy, a podejrzewam, że jako początkujący nie piszesz mocno wielouzytkownikowej aplikacji. :)
-- P.M.
Misiekd - 14-05-2006 00:48
Dnia Sat, 13 May 2006 13:43:17 +0200, Grzesiek napisał(a):
> [ciach]
a nie lepiej dodać pole wyliczalne do Query?? Przy powyższym wystarczy, że zrobisz where który zwróci Ci nie wszystkie rekordy i będziesz miał dziury w numeracji. Ogólnie robienie LP w bazie to zły pomysł
-- Pozdrawiam Misiekd
=?ISO-8859-2?Q?Micha=B3_Zaborowski?= - 15-05-2006 00:09
Można zrobić dodatkową tabelę, np. z definicjami numeratorów. Lockowanie może odbywać się na tej tabeli. Czyli przy nadawaniu kolejnego numeru blokowana jest dodatkowa tabela - i tak w 99% używana do generowania numerów. Dodatkowo jedna kolejność może być w kilku numeratorach - faktury, noty i korekty mogą mieć unikalną sekwencję, ale inne numery - np 1/FV/2006, 2/N/2006, 3/FV-k/2006. Dodatkowo funkcja generująca może dodawać datowanie czasem przy generowaniu korekt księgowy chce, żeby było podane Faktura korygująca nr 3/FV-k/2006 z dn. 2.04.2006 do faktury 1/FV/2006 z dn.... W PG jest tylko jeden problem. Lock stoi do końca transakcji a procedura działa w kontekście transakcji, czyli nie może jej zakończyć... Czyli strona kliencka musi mieć świadomość tego co się dzieje po stronie serwera...
-- Pozdrawiam, Michał Zaborowski (TeXXaS)
Grzesiek - 18-05-2006 00:16
Dziekuje za wszystkie odpowiedzi.
Pozdrawiam
Grzegorz
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
zanotowane.pldoc.pisz.plpdf.pisz.plbajkomoda.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 |
|