![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Mam pytanie do MySQL'owców : czy można w jakikolwiek sposób emulować sekwencje w MySQL ?
Chciałbym móc wykonywać zapytania następującej postaci:
Próbowałem wykorzystać funkcję LAST_INSERT_ID(), ale ona ma ograniczony zasięg (nie mogę przy jej użyciu pobrać bieżącej wartości sekwencji tabeli 'master' wstawiając wiersz do tabeli 'detail'). Ten post edytował prond 15.02.2007, 09:51:16 -------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
w mysql mamy cos takiego jak autoincrement. Nadajesz dla klucza glownego ze ma byc autoincrement i kazdy kolejny rekord, jesli nie okreslisz z palca ID, bedzie mial ID o jeden wiekszy.
last_insert_id() dziala prawidlowo, czyli zwraca id rekordu ostatnio dodanego do bazy. Przyklad, ktory dziala:
Oczywiscie tabele x i y maja jeszcze pole ID, ktore jest autoincrement. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem wykonać zapytanie, które mi zasugerowałeś, ale dostaję BŁĄD :
W czym teraz może tkwić problem ? -------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 401 Pomógł: 5 Dołączył: 14.09.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A czemu zapisywac wartosc zwracana przez LAST_INSERT_ID do zmiennej - przeciez to sie nie zmienia na poziomie sesji.
Poza tym jest druga sprawa, LAST_INSERT_ID przyjmuje parametr, ktory pozwala ustawic wlasnie te zmienna, wtedy mozemy sobie zrobic tabelke, w ktorej trzymamy nasza sekwencje i updateowac opowiednie pole:
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@prond nie ustawiles dla tabeli master pola ID jako autoincrement i on ci zera powstawial.
@bendi ale przeciez last_insert_id zwraca id ostatnio dodanego rekordu, a prond dla 3 ostatnich insertow chce miec id z pierwszego inserta A twoj drugi sposob z dodatkowa tabela jak na moj gust jest zdecydowanie dluzszy i mniej przyjazny ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Już poszło, dzięki.
Nie ustawiłem auto_increment dla tabelki 'detail'. Teraz działa tak, jak powinno przy takiej postaci kodu:
-------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
edit:
@prond nie dolukalem twoich wszystkich wynikow. to chyba dla detail masz cos nie tak z kluczem glownym edit: edytowalismy w tym samym czasie, ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 401 Pomógł: 5 Dołączył: 14.09.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
@bendi ale przeciez last_insert_id zwraca id ostatnio dodanego rekordu, a prond dla 3 ostatnich insertow chce miec id z pierwszego inserta Fakt moj blad - nie doczytalem ![]() A twoj drugi sposob z dodatkowa tabela jak na moj gust jest zdecydowanie dluzszy i mniej przyjazny ![]() A ja wcale nie twierdze, ze jest lepszy, po prostu lubie dawac ludziom duzo opcji do wyboru ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 03:51 |