Я знаю, как работает определенный синтаксис запросов MySQL для INSERT INTO SET
и ON DUPLICATE KEY UPDATE
.Но вы можете объединить их?И ... можете ли вы использовать одну и ту же строку $columnSet
(см. Ниже) для части INSERT
и UPDATE
, оставив там уникальное поле?
Конкретизируйте этот пример (я использую php сpdo на моем сервере):
// Define the query
$columnSet = "id=:id, date=:date, created=:created, modified=:modified, removed=:removed, synced=1, points=:points, comment=:comment";
$insertQuery = "INSERT INTO point_events SET"
. $columnSet." ON DUPLICATE KEY UPDATE ".$columnSet;
// Define the data
$pointData['id'] = 'someuniqueid not auto incremented';
$pointData['created'] = 1234; // a timestamp
$pointData['modified'] = 1234; // a timestamp
$pointData['removed'] = NULL;
$pointData['points'] = 10;
$pointData['comment'] = "A comment";
$pointData['date'] = time();
// Execute the query. pdoModify is custom function that executes the query.
pdoModify($pdoNew, $insertQuery, $oldData);
Все сообщения, которые я видел, не объединяют эти два синтаксиса, и все сообщения на ON DUPLICATE KEY UPDATE
предполагают, что вы не должны включать (дублирующий) ключ в строкупосле UPDATE
.Итак, это безопасно, или это может вести себя по-другому / иметь нежелательные побочные эффекты.Именно то, что мне нужно, - это оставить уникальный идентификатор в $ columnSet для ОБНОВЛЕНИЯ.