ďťż
 
Posgresql + wyciaganie numeru zamowienia(pierwszego wolnego) ďťż
 
Posgresql + wyciaganie numeru zamowienia(pierwszego wolnego)
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

Posgresql + wyciaganie numeru zamowienia(pierwszego wolnego)



news.gazeta.pl - 20-03-2007 00:02
Posgresql + wyciaganie numeru zamowienia(pierwszego wolnego)
  Witam
Mam w bazie tabele ktora ma jedna kolumne z numerem zamowienia.
W tym problem ze numery zamowienia mozna wpisac recznie wiec kazdy moze
pisac jaki chce.
Program dba o to zeby numer zamowienia sie nie powtorzyl.

Przy wprowadzaniu zamowienia takze ma podpowiadac numer zamowienia ktory ma
byc
pierwszym wolnym numerem w bazie(z kolumny numer_zamowienia).

Jak wyciagnac ostatni wolny to wiem bo to proste select
max(numer_zamowienia)+1
i juz a jak wyciagnac pierwszy wolny ?

Np mamy w bazie takie numery zamowien:

1
2
5
6
7
13
44

i teraz jak wyciagac z bazy numer 3 ? (tzn wypisac jako sugerowany kolejny
numer zamowienia)
Baza to postgresql jezeli to cos pomoze.





hubert depesz lubaczewski - 20-03-2007 00:02

  On 2007-03-19, news.gazeta.pl <pseudo@chello.pl> wrote:
> Np mamy w bazie takie numery zamowien:
> 1
> 2
> 5
> 6
> 7
> 13
> 44
> i teraz jak wyciagac z bazy numer 3 ? (tzn wypisac jako sugerowany kolejny
> numer zamowienia)
> Baza to postgresql jezeli to cos pomoze.

powiedz jeszcze która wersja i ile masz rekordów.
bo jest kilka rozwiązań o różnych wydajnościach, ale najwydajniejsze
wymaga rzeczy które są od niedawna.

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)




news.gazeta.pl - 20-03-2007 00:02

  > powiedz jeszcze która wersja i ile masz rekordów.
> bo jest kilka rozwiązań o różnych wydajnościach, ale najwydajniejsze
> wymaga rzeczy które są od niedawna.

PostgreSQL 8.0.11
rekordow ok 5 tys i powieksza sie o ok 20 dziennie




hubert depesz lubaczewski - 21-03-2007 00:04

  On 2007-03-19, news.gazeta.pl <pseudo@chello.pl> wrote:
>> powiedz jeszcze która wersja i ile masz rekordów.
>> bo jest kilka rozwiÂązaĂą o róÂżnych wydajnoÂściach, ale najwydajniejsze
>> wymaga rzeczy które sÂą od niedawna.
> PostgreSQL 8.0.11
> rekordow ok 5 tys i powieksza sie o ok 20 dziennie

dla tylu rekordów to nie ma co kombinować.

select
e.numer_zamowienia + 1
from
zamowienia e left outer join zamowienia ne on e.numer_zamowienia + 1
= ne.numer_zamowienia
where
ne.numer_zamowienia is null
order by e.numer_zamowienia asc limit 1;

powinno być ok.

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)





kuczek@kuczek.pl - 21-03-2007 00:04

 
hubert depesz lubaczewski napisał(a):
> select
> e.numer_zamowienia + 1
> from
> zamowienia e left outer join zamowienia ne on e.numer_zamowienia + 1
> = ne.numer_zamowienia
> where
> ne.numer_zamowienia is null
> order by e.numer_zamowienia asc limit 1;
>
> powinno być ok.
>
> depesz

Nie, żebym się czepiał my Master, ale co by było gdybym
się zawziął i podłączył z drugiego (trzeciego, n-tego) stanowiska ?
Robimy save na raz,dwa, trzy, cztery i ..w pewnej niesprzyjającej
sytuacji - duplicate key jak nic.
Proponowałbym mimo wszystko update do nowszej wersji PostgreSQL
i SELECT FOR UPDATE ... NOWAIT plus obsłużenie błędu.
Dla mnie działa od ponad roku rewelacyjnie.
Wcześniej oczywiście trzeba było kombinować z SELECT FOR UPDATE i
obsłużeniem timeout ale po co odkrywać Amerykę od nowa ...

Pozdrawiam
Rony




hubert depesz lubaczewski - 21-03-2007 00:04

  On 2007-03-20, kuczek@kuczek.pl <kuczek@kuczek.pl> wrote:
> Nie, żebym się czepiał my Master, ale co by było gdybym
> się zawziął i podłączył z drugiego (trzeciego, n-tego) stanowiska ?
> Robimy save na raz,dwa, trzy, cztery i ..w pewnej niesprzyjającej
> sytuacji - duplicate key jak nic.

ależ oczywiście.
ja tylko odpowiedziałem na pytanie jak znaleźć pierwszy wolny numer.

normlanie to osobę chcącą "odzyskiwać" numery należy odstrzelić i
nauczyć korzystania z sekwencji ;-P

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)




kuczek@kuczek.pl - 21-03-2007 00:04

 
hubert depesz lubaczewski napisał(a):
> ależ oczywiście.
> ja tylko odpowiedziałem na pytanie jak znaleźć pierwszy wolny numer.
>
> normlanie to osobę chcącą "odzyskiwać" numery należy odstrzelić i
> nauczyć korzystania z sekwencji ;-P

No nie tłumaczmy sobie oczywistych oczywistości ;)
Niestety, wyłóż to "ekspertom" z Ministerstwa Finansów. Żaden jełop
nie rozumie, że UNIKALNY
nie znaczy to samo co KOLEJNY. Ale co tam my biedni programiści...
Chociaż Ustawa o Rachunkowości ... ale co tam, na "ekspertów" z TK nie
poradzisz.
Odstawiam SELECT FOR UPDATE.. NOWAIT , różne tam while i dzikie węże,
na szczęście PostgreSQL daje radę nawet z naszym kochanym MF. No może
z wyjątkiem ZUS bo tam nawet "extended" Oracle jest za cienki :D

Pozdrawiam, Master.

Rony
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= mysql, statystykl, jak wyciagnac dane rozkladu czasu ze wzgledu na okres pelnych godzin [PGSQL] Pole "timestamp" a wyciagniecie tylko danych z danego roku. [MySQL] Proste pytanie z wyciągnięciem czasu, a jednak mnie zagieło. Jak wyciągnąć fragment grafiki (klatka, kilka sekund video) z pliku Oracle - jak z liczby dni od roku 1900 wyciagnac date? konkurs SQL Injection - 10 PLN na GSM dla pierwszej osoby, ktora dostanie sie do bazy [oracle] jak wyciągnąć jeden znak ze stringa/zmiennej? Zapytanie SQL o wyciagniecie danych z tej samej tabeli wyciągnięcie danych z xls bez eksportu do cvs
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • morebeer.opx.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