Cú pháp INSERT ... ON DUPLICATE KEY UPDATE cot = gia_tri_moi cho phép "upsert": chèn mới nếu khóa chính/unique chưa tồn tại, cập nhật nếu đã tồn tại.
Ví dụ minh họa
Tạo bảng Unique Key trên FirstName:
mysql> CREATE TABLE DemoTable1891 (FirstName VARCHAR(20), UNIQUE KEY(FirstName));
Chèn 'Chris' (mới) -> INSERT. Chèn 'David' (mới) -> INSERT. Chèn lại 'Chris' (trùng) -> UPDATE FirstName='Robert':
mysql> INSERT INTO DemoTable1891 VALUES('Chris') ON DUPLICATE KEY UPDATE FirstName='Robert';
mysql> INSERT INTO DemoTable1891 VALUES('David') ON DUPLICATE KEY UPDATE FirstName='Robert';
mysql> INSERT INTO DemoTable1891 VALUES('Chris') ON DUPLICATE KEY UPDATE FirstName='Robert';
Kết quả (Chris bị đổi thành Robert):
+-----------+ | FirstName | +-----------+ | David | | Robert | +-----------+
Lưu ý: Cần có PRIMARY KEY hoặc UNIQUE KEY để trigger duplicate. VALUES(cot) trong UPDATE tham chiếu giá trị chèn ban đầu.