我有一个表格,其中列id
,user_id
,post_id
, like
, views
。当用户点击Like按钮时,一行将被添加到相应的user_id
和post_id
表中,并且like
将被设置为1
。如果该行已经存在并且like
列已经是1
,则什么也不会发生。使用带有2个密钥的重复密钥更新
当用户访问特定页面,一行将被添加到表与相应的user_id
和post_id
,并view
将被设置为1
。但是,如果该行已存在,则view
中的值将递增。
问题:我尝试使用INSERT INTO mytable ... ON DUPLICATE KEY UPDATE like = 1
,但表的主键是id
和不user_id
或post_id
。如果我将主密钥设置为user_id
或post_id
,则会出现问题,因为如果存在具有相同user_id
和post_id
的行,则只会复制该行。
在这种情况下,应该如何构建查询?
或者更好的情况是将表格拆分成2个表格,一个用于likes
,另一个用于views
。如果是这种情况,我仍然需要根据user_id
和post_id
这两列设置唯一的行。
或者做多个SQL查询?
请指教,谢谢!
所以我创建两个'user_id'和'post_id'列的唯一键,主键仍然是'id'? 'ALTER TABLE''喜欢''ADD ADD UNIQUE( \'user_id \', \'post_id \' );' – Nyxynyx 2012-07-21 21:08:04
正好!如果需要,您可以拥有唯一的密钥和主键 – 2012-07-23 19:03:18