INSERT INTO … ON DUPLICATE KEY UPDATE работи по следния начин:
- опитва се да вмъкне ред както обикновено
- ако възникне нарушение на ограничение в която и да е колона, той изпълнява
UPDATEизраз вместо на съществуващия ред, с койтоINSERTпротиворечиво изявление
Това просто означава, че ако UPDATE сам операторът би бил успешен, неговият ON DUPLICATE KEY UPDATE еквивалентът също ще работи. Това означава, че очевидно не можете да нарушите никакви ограничения в UPDATE или всичко ще се провали (напр. опит за задаване на стойност на UNIQUE колона, която вече съществува в друг ред).
Ако зададете същата стойност в същата колона отново, това по същество е без операция. Стойността в колоната не се променя и следователно също не може да причини грешки (да приемем, че нямате наистина фънки BEFORE UPDATE тригери, които могат да се държат неправилно). Броят на колоните тук е без значение, можете да промените толкова или колкото по-малко в един израз, колкото искате.