MySQL DUPLICATE KEY UPDATE
Забавно получилось: давно написал, как сделать ON DUPLICATE KEY UPDATE для SQL Server и
ON DUPLICATE KEY UPDATE для PostgreSQL, а «оригинал» не описал.
В общем, всё просто:
INSERT INTO my_table
(
col1,
col2,
col3,
col4
)
VALUES
(1, 2, 3, 4),
(2, 2, 3, 4),
ON DUPLICATE KEY UPDATE
col1 = col1
Это нужно, чтобы не было ошибок при вставке, если по одному из столбцов, к примеру, по col1, есть уникальный ключ. При этом вставки при дублирующемся значении уникального ключа просто не будет (при этом значение поля с уникальным ключом обновится само на себя).
Чтобы при дублирующемся значении обновить хранящиеся значения новыми данными, нужно (допустим, что уникальный ключ по col1):
INSERT INTO my_table
(
col1,
col2,
col3,
col4
)
VALUES
(1, 2, 3, 4),
(2, 2, 3, 4),
ON DUPLICATE KEY UPDATE
col2 = VALUES(col2),
col3 = VALUES(col3),
col4 = VALUES(col4)
Тогда при вставке строки с дублирующимся значением уникального ключа будут обновлены все остальные поля.
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.
One Response so far.