If you mention ON DUPLICATE KEY UPDATE when a row is inserted that is causing a duplicate value in a UNIQUE index or PRIMARY KEY then MySQL performs an UPDATE of the old row.
Suppose, in a table there are three columns i.e. a, b, c.
If column ‘a’ is declared as UNIQUE and contains the value 1 then the following two statements are similar effect:
INSERT INTO tbl_name (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c = c+1;
UPDATE tbl_name SET c = c+1 WHERE a = 1;
A table containing an AUTO_INCREMENT column and INSERT … ON DUPLICATE KEY UPDATE inserts or updates a row then, the LAST_INSERT_ID() function returns the AUTO_INCREMENT value.
The ON DUPLICATE KEY UPDATE clause may contain multiple column assignments i.e. separated by commas.
The DELAYED option is ignored while you are using ON DUPLICATE KEY UPDATE.