【发布时间】:2015-08-11 16:03:03
【问题描述】:
尚未对 INSERT INTO ... ON DUPLICATE KEY UPDATE 查询进行大量工作,因此请引导我找到解决方案。
数据库表名为'tb_logs',有4列:
log_user_id, log_visitor_id, log_date, log_counter
我想插入数据,并且只更新log_date 和log_counter,如果行log_user_id AND log_visitor_id 已经存在并且我要插入的值完全相同。
无论我尝试过什么,都无法正常工作,它会更新不应更新的行,或添加不应添加的新行。
我最近的代码:
$sql = "
INSERT INTO tb_logs (
log_user_id,
log_visitor_id,
log_date,
log_counter
) VALUES (
'{$user}',
'{$visitor}',
UNIX_TIMESTAMP(CURRENT_TIMESTAMP),
'1'
) ON DUPLICATE KEY UPDATE
log_user_id='{$user}',
log_visitor_id='{$visitor}',
log_date=UNIX_TIMESTAMP(CURRENT_TIMESTAMP),
log_counter=log_counter+1
";
也许我只是没有正确理解 ON DUPLICATE KEY UPDATE 查询?
例子:
log_user_id log_visitor_id log_date log_counter
--------------------------------------------------------
1 5 23434234 1
当现在 log_user_id=1 AND log_visitor_id=5 再次时,不要插入新行,只需更新 log_date 和 log_counter
这可能吗?
【问题讨论】:
标签: mysql unique-key unique-index on-duplicate-key