页面视图表:我只想每页每个ip一行,但只能有一个主键。我该如何解决这个问题?

时间:2013-07-06 18:20:20

标签: php mysql

我有一个页面查看表,每次查看页面时,用户的ip和页面ID都放在一个表中。在此表中,我只想为每个ip / page id组合使用一行。如果我将主键设置为ip,则每个ip只能与一个页面相关联。如果我将主键设置为页面ID,则每个页面只会关联一个ip。

我需要这两个都是键,因为它是ip和页面id的组合,不能在表中重复。我怎么能这样做?

$mysqli->query("INSERT INTO page_views (ip, page_id, view_key) VALUES ('$ip', '$page_id', '$view_key') 
ON DUPLICATE KEY UPDATE page_key='$view_key'");

这就是我需要设置工作的方式 - 所以每当有人查看页面时,都会为它们分配一个view_key,并将其放在表格中。如果已经有查看该页面的ip记录,则应覆盖view_key字段。

3 个答案:

答案 0 :(得分:2)

如果我理解正确,你需要复合主键:

CREATE TABLE(...,
PRIMARY KEY(page_id, ip));

答案 1 :(得分:0)

另一个选择是:

插入您的表格 user_ip,page_id ) SELECT * FROM(SELECT inserted_user_ip,inserted_pa​​ge_id )AS tmp 什么地方没有(     选择 user_ip,page_id FROM 您的表格 WHERE user_id = inserted_user_id AND page_id = inserted_pa​​ge_id )LIMIT 1;

答案 2 :(得分:0)

为表添加唯一键

ALTER TABLE table_name add unique key(ip_address,page_id);