Jeśli masz wkładkę z klauzulą ON DUPLICATE KEY i istnieje duplikat klucza, czy istnieje jakikolwiek sposób na odzyskanie klucza podstawowego, który został zduplikowany? czy muszę zrobić własne zapytanie ręczne? O ile mogę powiedzieć, getGeneratedKeys() z klasy CallableStatement nie zwróci, ponieważ nowa wstawka nie została faktycznie wykonana.Klucz wygenerowany przez JDBC z insertu na duplikacie
EDIT Przepraszam, jeśli nie było to jasne, ale chcę odzyskać KLAWISZ PIERWOTNY rekordu.
Więc gdybym miał następującą tabelę (składnię wybaczyć, po prostu wpisując je odręczne):
CREATE TABLE some_table(
id int(11) unsigned NOT NULL AUTO_INCREMENT,
value varchar(500)NOT NULL,
count int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (id),
UNIQUE KEY (value)
);
INSERT INTO some_table(value) ON DUPLICATE KEY UPDATE count = count + 1;
Gdybym dodać „test” jako wartość, nowy rekord zostanie dodany oraz identyfikator zostanie zwrócony przez getGeneratedKeys();
Jeśli spróbuję ponownie dodać "test", klucz już istnieje i dlatego liczba zostanie zaktualizowana. To, czego chcę, to podstawowy klucz/identyfikator tego wiersza, który został zaktualizowany. Czy muszę zobaczyć, że nie otrzymuję żadnych wyników z getGeneratedKeys() - jak żaden z wygenerowanych - i czy wybrać inny po fakcie?
Z pewnością znasz duplikat, ponieważ znajduje się on w wyciągu, który właśnie wykonałeś? –
Czy możesz podać przykład, w którym nie wiesz, co to był klucz przed próbą wstawienia? Nie wydaje się, żeby to się mogło zdarzyć ... –
Przepraszam - pewnie powinienem być bardziej jasny. Chcę przywrócić klucz podstawowy tabeli. –