INSERT INTO - ON DUPLICATE KEY

时间:2014-12-11 23:43:58

标签: mysql mysqli

我在循环中得到了这个查询:

while ($row = mysql_fetch_array($query)) {
    INSERT INTO restaurant_views (date, restaurant_id, views) VALUES ('{$current_date}', '{$row['id']}', 1) ON DUPLICATE KEY UPDATE views=views+1
}

此代码应该更新表格 restaurant_views 中的视图列。
问题是它没有检查date和restaurant_id是否重复,它只是检查数据库中的主列是否重复。

以下是该表的屏幕截图: enter image description here

正如您所看到的,日期 restaurant_id 都是唯一的,但此代码给我的是:

enter image description here

查询已循环7次,您可以在视图中看到。这是错误的。
我想要的是7个不同的行,每个行中有1个视图。

我希望你明白问题是什么!

提前致谢,
Tompa

1 个答案:

答案 0 :(得分:2)

如果您想要餐馆ID /日期的唯一性,那么您需要在这些列上使用唯一索引/约束:

create unique index idx_restaurant_views_2 on restaurant_views(restaurant_id, date)

然后你的代码应该可以工作。