INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
można to też tak obejść, albo nałożyć unikat z alter table jak kolega na dole napisał, bardzo niepraktyczne zastosowania.
Wyobraź sobie sytuacje kiedy nie ustawiono, klucza głównego- wtedy, przed każdym insertem wypadałoby zrobić jego równoważny DELETE, co daje nam 2*n operacji- gdzie n było by liczbą zapytań insertujących np
Efekty nie są identyczne dla tabeli InnoDB, w której a jest kolumną z automatyczną inkrementacją. W przypadku kolumny z automatycznym zwiększaniem, instrukcja INSERT zwiększa wartość autoinkrementacji, ale UPDATE nie).