У меня есть стол с колонками record_id
(auto inc), sender
, sent_time
и status
.Как вставить запись или UPDATE, если она уже существует?
В случае отсутствия записи определенного отправителя, например «sender1», я должен ЗАПИСАТЬ новую запись, иначе мне нужно ОБНОВИТЬ существующую запись, принадлежащую «user1».
Так что, если нет каких-либо запись уже хранится, я выполнил бы
# record_id is AUTO_INCREMENT field
INSERT INTO messages (sender, sent_time, status)
VALUES (@sender, time, @status)
В противном случае я бы выполнить UPDATE заявление.
В любом случае .. кто-нибудь знает, как объединить эти два оператора, чтобы вставить новую запись, если нет какой-либо записи, где значение поля отправителя «user1» в противном случае обновляет существующую запись?
синтаксиса является еще более мощным, чем: «ON KEY UPDATE DUPLICATE col1 = VALUES (col1) является более элегантным способом сделайте то, что вы описали (и оно работает с многострочными вставками). Вы также можете использовать значение col1, как в ON DUPLICATE KEY UPDATE col1 = col1 + 1. – ojrac
Почему вы делаете col1 = col1 + 1. Что это значит mean? –
Наткнулся на эту тему ... col1 = col1 +1 - пример, где, возможно, у вас есть счет в вашей таблице, вместо того, чтобы использовать SELECT для получения значения и добавить 1, он будет ссылаться на текущее значение в таблице, и выполнить вычисление, делающее вывод SELECT избыточным. – tutts