Mam pytanie dotyczące MySQL, które wydaje mi się dość łatwe. Muszę zwrócić OSTATNI WSTAWIONY ID z tabeli1, gdy uruchamiam następujące zapytanie MySql:
INSERT INTO table1 (title,userid) VALUES ('test',1);
INSERT INTO table2 (parentid,otherid,userid) VALUES (LAST_INSERT_ID(),4,1);
SELECT LAST_INSERT_ID();
Jak rozumiesz, bieżący kod zwróci po prostu LAST INSERT ID tabeli2 zamiast tabeli1, jak mogę uzyskać identyfikator z tabeli1, nawet jeśli wstawię do tabeli2 między?
mysql
insert
last-insert-id
Jaskółka oknówka
źródło
źródło
Ponieważ faktycznie zapisałeś poprzednią LAST_INSERT_ID () w drugiej tabeli, możesz ją stamtąd pobrać:
źródło
Umożliwia to wstawienie wiersza do 2 różnych tabel i utworzenie odniesienia do obu tabel.
źródło
Miałem ten sam problem w bashu i robię coś takiego:
co działa dobrze :-) Ale
nie działa. Ponieważ po pierwszym poleceniu powłoka zostanie wylogowana z mysql i zalogowana ponownie dla drugiego polecenia, a następnie zmienna @last_insert_id nie jest już ustawiona. Moje rozwiązanie to:
Może ktoś szuka rozwiązania i bash :-)
źródło
LAST_INSERT_ID
dostępne tylko dla aktywnego połączenia.#mysq
-command connect dla każdego polecenia. Możesz połączyć się zmysql
poleceniem z serwerem i wstawić swoje zapytania lub możesz utworzyć plik tekstowy imysql
polecenie z przekierowaniem z pliku txt akamysql [connection option] < txt.file
Mamy tylko jedną osobę wprowadzającą rekordy, więc zaraz po wstawieniu wykonuję następujące zapytanie:
To pobiera ostatni identyfikator z bazy danych.
źródło
W przypadku braku rozwiązania InnoDB: możesz skorzystać z procedury
don't forgot to set the the delimiter for storing the procedure with ;
I możesz go użyć ...
źródło
Czy byłoby możliwe zapisanie zmiennej last_id_in_table1 w zmiennej php, aby użyć jej później?
Z tym last_id muszę dołączyć niektóre rekordy w innej tabeli z tym last_id, więc potrzebuję:
1) Wykonaj INSERT i pobierz last_id_in_table1
2) W przypadku jakichkolwiek nieokreślonych wierszy w innej tabeli, ZAKTUALIZOWANIE tych wierszy za pomocą parametru last_id_insert wygenerowanego we wstawianiu.
źródło
Zamiast tego
LAST_INSERT_ID()
spróbuj użyć tegoźródło
Przedostatni i przedostatni:
źródło
Aby dodać do postu Rodrigo, zamiast LAST_INSERT_ID () w zapytaniu możesz użyć SELECT MAX (id) FROM table1;, ale musisz użyć (),
źródło
Jeśli chcesz mieć z mysql, po zapytaniu, ostatni auto-inkrementalny identyfikator bez kolejnego zapytania, wpisz swój kod:
źródło