Muszę napisać zapytanie, w którym muszę przydzielić ID
(klucz unikalny) dla konkretnego rekordu, który nie jest używany/nie jest generowany/nie istnieje w bazie danych.Jak uzyskać pierwszy nieużywany identyfikator w tabeli?
Krótko mówiąc, muszę wygenerować id
dla konkretnego rekordu i pokazać go na ekranie drukowania.
Np .:
ID Name 1 abc 2 def 5 ghi
Tak, chodzi o to, że powinien on powrócić ID=3
jako następny natychmiastowe, które nie jest jeszcze generowane, a po tej generacji id
będę przechowywać te dane powrót do tabeli bazy danych.
To nie jest HW: robię projekt, i mam wymaganie, gdzie muszę napisać to zapytanie, więc potrzebuję pomocy, aby to osiągnąć.
Proszę, poprowadź mnie, jak zrobić to zapytanie lub jak to osiągnąć.
Dzięki.
nie jestem w stanie dodać komentarz ,, tak to dlaczego piszę moje komentarze tutaj .. używam MySQL jako bazy danych ..
moje kroki byłoby tak: -
1) Pobierz identyfikator z tabeli bazy danych, która nie jest używana.
2) Jak ich nie ma. użytkowników (projekt oparty na stronie internetowej), więc nie chcę, aby wystąpiła współbieżność, więc jeśli jeden identyfikator zostanie wygenerowany dla jednego użytkownika, powinien zablokować bazę danych, dopóki ten sam użytkownik nie otrzyma identyfikatora i nie zapisze rekordu dla tego identyfikatora. Następnie drugi użytkownik może pobrać identyfikator, który nie istnieje. (Wymaganie główne) ..
Jak mogę osiągnąć wszystkie te rzeczy w MySQL? Również przypuszczam, że odpowiedź Quassnoi będzie warta, ale jej nie praca w MySQL ... więc wyjaśnij trochę o zapytaniu, ponieważ jest dla mnie nowością .. i czy to zapytanie działa w MySQL ..
Jakiego RDBMS używasz do swojego projektu? – Quassnoi
Należy zachować ostrożność przy współbieżności, tutaj. Jeśli masz wielu użytkowników, luka czasowa między uruchomieniem kwerendy Quassnoi i przechowywaniem wyników w DB może spowodować duplikowanie identyfikatorów. Dlaczego po prostu niech RDBMS nie zarządza kolumnami ID? –
Jak pisze DDaviesBrackett, jeśli to nie jest praca domowa, to cierpi na poważny problem z rzeczywistego świata: dwa procesy mogą uruchomić zapytanie i uzyskać odpowiedź, a następnie każda z nich próbuje wstawić duplikat rekordu. Jeśli jest to po prostu odpowiedź na pytanie: czy są jakieś luki? to jest inne. To zabawne, że ktokolwiek by się tym przejmował. – Yishai