ďťż
 
Autoinkrementacja PostgreSQL ďťż
 
Autoinkrementacja PostgreSQL
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • bajkomoda.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com