我有一个页面查看表,每次查看页面时,用户的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字段。
答案 0 :(得分:2)
如果我理解正确,你需要复合主键:
CREATE TABLE(...,
PRIMARY KEY(page_id, ip));
答案 1 :(得分:0)
另一个选择是:
插入您的表格( user_ip,page_id ) SELECT * FROM(SELECT inserted_user_ip,inserted_page_id )AS tmp 什么地方没有( 选择 user_ip,page_id FROM 您的表格 WHERE user_id = inserted_user_id AND page_id = inserted_page_id )LIMIT 1;
答案 2 :(得分:0)
为表添加唯一键
ALTER TABLE table_name add unique key(ip_address,page_id);