![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 14.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
jestem nowy tu, więc wybaczcie niewiedzę na temat funkcjonowania forum. Mój problem polega na tym, że potrzebuję poznać numer id który zostanie przydzielony do następnego rekordu. Szukam po Google'ach, ale tam jest tylko o największym id, a więc nie to, co mnie interesuje. Mam 3 rekordy o id kolejno 1, 2, 3. Jeżeli teraz dodam rekord, to jego id będzie równe 4. Ale jeżeli usunę rekord 3, to kolejny nowo dodany rekord będzie miał również id równe 4. I ja właśnie potrzebuję wyciągnąć tę "czwórkę", która jeszcze nie powstała, a dopiero powstanie. Z góry dzięki za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Jeśli pracujesz na bazie MySQL, to pomoże Ci funkcja mysql_last_id, jeśli na postgresie to sprawdź funkcję pg_last_oid.
A jeśli nie ustawiłeś w tabeli autoinkrementacji, to zrób to i nie będziesz musiał martwić się o następne id. P.S. Przenoszę na przedszkole i dodaję tag do tematu. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 14.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pracuję na MySQL. Funkcja, którą podałeś, nie spełni zadania w tym wypadku ponieważ muszę najpierw dodać rekord. A ja chcę poznać id tego rekordu zanim on jeszcze zostanie dodany.
Mam auto_increment'a. |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
No to musisz użyć dwóch zapytań.
1. select max(id) from tabela 2. Twoje zapytanie. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 14.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiesz mnie.
Mam tabele: id | pole | --+-----+ 1 | bla | --+-----+ 2 | ble | --+-----+ Jeżeli użyję funkcji max id to dodając 1 do otrzymanego wyniku otrzymam id rekordu, który zostanie dodany (czyli 3 rekordu). A teraz: id | pole | --+-----+ 1 | bla | --+-----+ 2 | ble | --+-----+ Dodałem rekord 3 (czyli id=3) ale go usunąłem. Potem znowu dodałem rekord, lecz teraz id równa się 4, a nie 3 (pomimo, że 3 został usunięty). Przy max id nie otrzymam numeru id rekordu, który zostanie dodany w przyszłości, a jedynie numer id rekordu o największym id. |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Nie widzę problemu. Skoro usunąłeś wiersz o id=3, a następnie ponownie go dodasz, to nic się nie stanie, tzn nie pojawi się błąd.
Ale jeśli nadal się upierasz, że potrzebujesz pobrać nowe id, to musisz poszukać w dokumentacji MySQL-a i sprawdzić, jak odpytać bazę, by zwróciło Ci aktualną wersję auto_increment. Niestety nie pomogę w tym, ponieważ nie używam MySQL-a. edit Poszukałem na google i znalazłem takie coś. Nie wiem, czy działa. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 14.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
numer id jest mi potrzebny do zapisu plikow, widac nie skumales
najwazniejsze jest to, ze jezeli usune wietrsz o id 3 to po ponownym dodaniu jego id bedzie mialo 4 i potrzebuje wiedziec jakie id bedzie mial rekord ktory dodam (w przyszlosci) mialam nadzieje ze tutaj znajde rozwiazanie, no ale coz... w kazdym razie dzieki za zainteresowanie |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Na prawdę nie rozumiem po co tak sobie utrudniać życie.
Sprawdź linka w moim poprzednim poście. Może o to Ci chodzi. Jeśli nie, to nie ma sposobu pobrania następnej wartości pola. |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Sprawdź to:
http://www.bram.us/2008/07/30/mysql-get-ne...-fromfor-table/ Wygląda obiecująco *. * zapewniam, że działa poprawnie - przed chwilą sprawdziłem. Ten post edytował phpion 14.10.2008, 20:02:28 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Nie widzę problemu. Skoro usunąłeś wiersz o id=3, a następnie ponownie go dodasz, to nic się nie stanie, tzn nie pojawi się błąd. (...) A spójność? No wiesz? Po kimś początkującym tobym mógł się tego spodziewać, ale po Tobie? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Cytat No wiesz? Po kimś początkującym tobym mógł się tego spodziewać, ale po Tobie? Autorowi najwyraźniej nie zależy o integralności danych, więc nawet o tym nie wspomniałem.Jeśli miałbym w każdym przypadku opisywać zagadnienia związane z danym tematem, to musiałbym pisać eseje na kilka stron (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 01:13 |