MySQL DUPLICATE KEY UPDATE
Забавно получилось: давно написал, как сделать ON DUPLICATE KEY UPDATE для SQL Server и
ON DUPLICATE KEY UPDATE для PostgreSQL, а «оригинал» не описал.
В общем, всё просто:
1 2 3 4 5 6 7 8 9 10 11 12 |
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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.
One Response so far.