Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pierwszy wolny autonumer, Ale tylko z uzyciem zapytania SQL
frickle
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 20.04.2006
Skąd: Kraków/Lublin/Lubartów

Ostrzeżenie: (0%)
-----


Witam

W związku z tym że jakoś nie mogę znaleźć odpowiedzi na moje pytanie, zwracam się z następującym problemem:

Mamy tabelę:

AUTONUMER | POLE1 | POLE2 | ...
---------------------------------------
1 A B ...
2 C D ...
i tak dalej

Autonumer jest kluczem głównym lub indeksem unikalnym

w pewnym momencie usuwam jakiś rekord, i zostaje mi dziura w autonumeracji. Chciałbym odszukać pierwszy wolny autonumer ale używając SQL-a.
Załóżmy że mamy tak poustawiane te numerki
1
2
3
5
6
7
9
10
11
12

Chciałbym skonstruować zapytanie, które zwróci w tym wypadku 4, ponieważ to jest pierwszy niewykorzystany numerek.

Czy ktoś ma pomysł jak to ugryźć?


--------------------
Lepiej kijek obcinkować niż go potem pogrubasić.
Go to the top of the page
+Quote Post
woj_tas
post
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 36
Dołączył: 31.03.2006
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


A po co? Zauważ że jest to niebezpieczne. W pewnym okresie czasu będziesz miał dwa rekordy o tym samym id (mimo że jeden został już usunięty). Jest to szczególnie niebezpieczne przy złączeniach i relacjach tabel. Identyfikator(id) w tabelach musi być unikalny, nawet w przypadku usunięcia części danych.

Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
oracle-manual
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 28.03.2008
Skąd: óć

Ostrzeżenie: (10%)
X----


Jeśli musisz znaleść pierwszy unikatowy to skorzystaj z sekwencji. Jeśli to akurat musi być 4 (tak jak na rysunku) to musisz zrobić złączenie tabel A x A a następnie wybrać najniższy w którym różnica jest większ od 1.


--------------------
Kiedy szukasz pomocy z baz danych wejdź na oracle help. A jeśli interesują cię wszystkie oracle funkcje lub tylko oracle substring , oracle to_char , oracle lower , oracle upper , oracle nvl to odwiedź powyższe strony.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 22:05