эффективная операция поднятия для MySQL: Использование INSERT ... на дубликате в управлении базами данных MySQL часто необходимо выполнять такие операции, как вставка новых строк или обновление существующих строк в зависимости от того, существуют ли данные. Это называется операцией «Upsert» (вставьте или обновляйте).
]MySQL предоставляет
вставка ... в дубликате обновления ключа синтаксис для эффективного реализации функции upSert. Его принцип работы заключается в следующем: ]
INSERT INTO `table_name`
(`column1`, `column2`, ...)
VALUES
(value1, value2, ...)
ON DUPLICATE KEY UPDATE
`column1` = value1_updated,
`column2` = value2_updated,
...
указывает значение, которое должно быть вставлено в таблицу. на дублировании обновления ключа пункт определяет действие, которое должно выполняться, когда в таблице есть строка с тем же первичным ключом (или уникальным индексом).
]
Например, рассмотрим следующую таблицу:
]
создать таблицу `usage` ( `thing_id` int не нулевой первичный ключ, `times_used` int по умолчанию 0, `first_time_used` TimeStamp );
CREATE TABLE `usage` (
`thing_id` INT NOT NULL PRIMARY KEY,
`times_used` INT DEFAULT 0,
`first_time_used` TIMESTAMP
);
из 4815162342, добавить 1 в столбец times_used и установить
first_time_used в текущую временную метку, Вы можете использовать следующий запрос Upsert:
]
вставьте в `usage`
(`thing_id`,` times_used`, `first_time_used`)
ЦЕННОСТИ
(4815162342, 1, теперь ())
В дубликате обновления ключей
`times_used` =` times_used` 1
INSERT INTO `usage`
(`thing_id`, `times_used`, `first_time_used`)
VALUES
(4815162342, 1, NOW())
ON DUPLICATE KEY UPDATE
`times_used` = `times_used` 1
из 4815162342 уже существует, запрос обновит столбец times_used , while
first_time_used ] остается без изменений. В противном случае будет вставлена новая линия.
]
вставьте ... в дубликате обновления ключей
]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3