Поиск по сайту:

Реализация INSERT… ПРИ ОБНОВЛЕНИИ ДУБЛИКАЦИОННОГО КЛЮЧА в MySQL


INSERT... ON DUPLICATE KEY UPDATE работает таким образом, что если он обнаруживает дубликат уникального или первичного ключа, он выполняет ОБНОВЛЕНИЕ. UPDATE выполняется только при возникновении повторяющихся значений.

Сначала создадим таблицу:

mysql> create table DemoTable733 (
   StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   StudentName varchar(100),
   StudentMarks int,
   UNIQUE KEY Un_Name (StudentName)
);
Query OK, 0 rows affected (0.60 sec)

Вставьте несколько записей в таблицу с помощью команды вставки:

mysql> insert into DemoTable733(StudentName,StudentMarks) values('John',45) 
ON DUPLICATE KEY UPDATE StudentMarks=86;
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable733(StudentName,StudentMarks) values('Adam',65) 
ON DUPLICATE KEY UPDATE StudentMarks=86;
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable733(StudentName,StudentMarks) values('Carol',75) 
ON DUPLICATE KEY UPDATE StudentMarks=86;
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable733(StudentName,StudentMarks) values('John',45) 
ON DUPLICATE KEY UPDATE StudentMarks=86;
Query OK, 2 rows affected (0.12 sec)

Отобразите все записи из таблицы с помощью оператора select:

mysql> select *from DemoTable733;

Это даст следующий результат:

+-----------+-------------+--------------+
| StudentId | StudentName | StudentMarks |
+-----------+-------------+--------------+
| 1         | John        | 86           |
| 2         | Adam        | 65           |
| 3         | Carol       | 75           |
+-----------+-------------+--------------+
3 rows in set (0.00 sec)

Статьи по данной тематике: