Я только что проверил ON DUPLICATE KEY UPDATE
для MySQL.Может ли этот запрос быть более сухим?
Вот пример запроса.
$query = 'INSERT INTO `activities`
(`id`,
`hole_id`,
`name_id`,
`start_depth`,
`end_depth`,
`start_time`,
`end_time`
) VALUES (
:id,
:hole_id,
:name_id,
:start_depth,
:end_depth,
:start_time,
:end_time
) ON DUPLICATE KEY UPDATE
`id` = :id,
`hole_id` = :hole_id,
`name_id` = :name_id,
`start_depth` = :start_depth,
`end_depth` = :end_depth,
`start_time` = :start_time,
`end_time` = :end_time
';
Существует, очевидно, много повторений.
Есть ли способ сказать «вставить или использовать существующую информацию для обновления».
Я просмотрел REPLACE
, и он говорит, что он вставляет и удаляет, если необходимо. Документы говорят, чтобы вставить или обновить, чтобы использовать метод, который я использовал выше.
Могу ли я устранить дублирование всей информации об обновлении?
Интересно, и я ценю ваш ответ, но он по-прежнему выглядит таким же количеством SQL. В идеале, я бы хотел, чтобы половину этого. Но я понимаю, что абстракции SQL иногда затрудняют жизнь. +1 – alex
Я не верю, что вы можете уменьшить размер запроса. Однако, используя VALUES(), вы сокращаете свое повторение, только помещая значения для записи в одно место в запросе. –
@ Я хорошо, спасибо еще раз. – alex