# Duplicated Row Errors

__*ON DUPLICATE KEY UPDATE*__
__*Handling duplicated PK*__

+ **`INSERT ... ON DUPLICATE KEY UPDATE ...`**: Avoid duplicated row records errors
+ Similar to **`REPLACE`**, uses **`UPDATE`** instead of **`DELETE`** to handle duplicated row records

```
tidb> SELECT id, name, gender FROM members;
+----+-------------------+--------+
| id | name              | gender |
+----+-------------------+--------+
|  1 | Fiona Frewert     | F      |
|  2 | Elisabeth Pawelke | F      |
+----+-------------------+--------+
2 rows in set (0.00 sec)

tidb> ~!@REPLACE@!~ INTO members (id, name) VALUES (1, 'Laura Fella');
Query OK, ~!@2 rows affected@!~ (0.01 sec)

tidb> INSERT INTO members (id, name) VALUES (2, 'Adaya') ~!@ON DUPLICATE KEY UPDATE@!~ name = 'Adaya';
Query OK, ~!@2 rows affected@!~ (0.01 sec)

tidb> SELECT id, name, gender FROM members;
+----+-------------+--------+
| id | name        | gender |
+----+-------------+--------+
|  1 | Laura Fella | ~!@NULL@!~   |
|  2 | Adaya       | ~!@F@!~      |
+----+-------------+--------+
2 rows in set (0.00 sec)

tidb> UPDATE members SET gender='F' WHERE id=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
```
------------------------------------------------------------
[no notes]