![]() |
![]() ![]() |
![]() |
![]()
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ć.
|
|
|
![]()
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 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 28.03.2008 Skąd: óć Ostrzeżenie: (10%) ![]() ![]() |
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 22:05 |