Szukałem w okolicy, ale nie znalazłem, czy to możliwe.
Mam takie zapytanie MySQL:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
Identyfikator pola ma „unikalny indeks”, więc nie może być ich dwóch. Teraz, jeśli ten sam identyfikator jest już obecny w bazie danych, chciałbym go zaktualizować. Ale czy naprawdę muszę ponownie określić wszystkie te pola, na przykład:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
ON DUPLICATE KEY UPDATE a=2,b=3,c=4,d=5,e=6,f=7,g=8
Lub:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g)
Podałem wszystko już we wkładce ...
Dodatkowa uwaga, chciałbym skorzystać z obejścia, aby uzyskać identyfikator!
id=LAST_INSERT_ID(id)
Mam nadzieję, że ktoś może mi powiedzieć, jaki jest najbardziej skuteczny sposób.
a=VALUES(a), b=VALUES(b), ...
jest drogą, którą musisz iść. Tak to robię dla wszystkich moichINSERT ON DUPLICATE KEY UPDATE
wypowiedzi.