Mam następujące zapytanie:MySQL ON DUPLICATE KEY - last insert id?
INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE a=1
chcę identyfikator albo wkładki lub aktualizacji. Zwykle uruchamiam drugie zapytanie w celu uzyskania tego, ponieważ uważam, że parametr insert_id() zwraca tylko "wstawiony" identyfikator, a nie zaktualizowany identyfikator.
Czy istnieje sposób INSERT/UPDATE i pobranie identyfikatora wiersza bez uruchamiania dwóch zapytań?
Zamiast przypuszczać, dlaczego sam tego nie przetestujesz? Kod SQL w powyższej edycji działa, a dzięki moim testom jest szybszy niż przechwycenie niepowodzenia wstawiania, użycie INSERT IGNORE lub wybranie, aby sprawdzić, czy istnieje pierwszy duplikat. –
OSTRZEŻENIE: Proponowane rozwiązanie działa, ale wartość auto_Inrement zwiększa się, nawet jeśli nie ma wkładki. Jeśli zduplikowany klucz zdarza się często, możesz chcieć uruchomić 'alter table tablename AUTO_INCREMENT = 0;' po powyższym zapytaniu, aby uniknąć dużych luk w twoich wartościach id. –