![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No więc mam tabelę:
id|numer (uproszczona) `id` jest AUTO_INCREMENT, mój problem to jak zrobić aby przy dodawaniu pole `numer` miało tą samą wartość co `id`? Niby jest LAST_INSERT_ID() ale jak mam tylko jeden INSERT to mi jakoś nie działa, (co po przeczytaniu manuala mnie nie dziwi). Czy ktoś wie jak rozwiązać ten problem? Bo pole `numer` przy dodaniu ma mieć tą samą wartość co `id` ale potem może się zmieniać (a przecież `id` nie będzie). |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
To wyciagnij selectem i sprawdz ile rekordow zwroci jezeli wiecej niz jeden to w zapytaniu uzyj last_insert_id a jezeli nie to daj na sztywno 1
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
skowron-line czy wiesz co piszesz?
LAST_INSERT_ID() zwraca ostatnio wygenerowany numer w a.-inc. w danej sesji (choć czasami trochę inaczej). Bym miał dwoma zapytaniami to by wyglądało tak:
Ale mi zależy aby to robić jak najmniejszą ilością, dlatego się pytam... Tylko widzę że nie mam co się na tym forum pytać, bo o bazy danych pytam drugi raz i znów nie mam jakiś satysfakcjonujących odpowiedzi, ba sam podaję jak to rozwiązać... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A czy ja gdziekolwiek wspomniałem chociaż o PHP?
Aby wybrać w PHP `id` dodanego właśnie rekordu użył bym mysql_insert_id(). Ale ja chcę to robić na poziomie bazy, po co mam się bawić w PHP przy dodawaniu rekordu. Dlatego nadal czekam na odpowiedź czy da się to lepiej zrobić? (oczywiście w MySQL...) Wpadł mi pewien pomysł do głowy, ale to jest to samo tylko w innej postaci... więc czekam, bo mimo wszystko w bazach to zemnie cienias. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 2 Dołączył: 8.11.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze tworzymy zmienną, po drugie przeszukujemy całą tablice (porównując), max(`id`)+1 może nie być tym co będzie teraz dodany.
Więc moja metoda jest szybsza, bo wykorzystuję coś informację o tym jaki numer `id` został dodany, a UPDATE też nie jest kosztowny (bo index na `id` jest założony) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 2 Dołączył: 8.11.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W sumie racja. Poszperałem trochę w temacie i chyba nic lepszego nie da się wykombinować.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 23:42 |