MySql:为每个文章ID创建一个唯一的字段

时间:2012-09-16 11:32:14

标签: mysql database key

我只想跟踪每个文章页面的唯一身份访问者。 我做了一个有两个字段的桌子。 article_id主要键,ip唯一

预期输出应该是:

article_id    *       IP
52            -  100.200.300.400
52            -  20.30.20.40
52            -  30.40.50.60
93            -  108.207.302.403
93            -  10.30.20.40

但它没有用,这就是我得到的:

article_id    *       IP
52            -  100.200.300.400
93            -  10.30.20.40

我认为我把钥匙设置错了。

4 个答案:

答案 0 :(得分:3)

当您将article_id定义为主键时,您将永远不会有两条具有相同article_id的记录。

为避免重复article_id + ip对,您可以定义两个字段的唯一索引:article_idip。< / p>

例如:

CREATE  TABLE `visits` (
  `article_id` INT NOT NULL ,
  `ip` VARCHAR(15) NULL ,
  UNIQUE INDEX `unique_article_ip` (`article_id`, `ip`) )
ENGINE = MyISAM;

答案 1 :(得分:1)

主键也是唯一的,因此它在表格中最多只显示一次。

  

定义:关系表的主键唯一标识表中的每条记录。

正确的主键是两列。

答案 2 :(得分:0)

您需要一个包含以下内容的表格:

ID - 唯一生成的数字,这个将是PK 日期 - 访问日期,这将有助于保留一个IP的独特访问 ARTICLE_ID - 文章ID IP - 只是IP

现在您在:ARTICLE_ID,ARTICLE_ID,IP上创建UNIQUE INDEX - 可能按此顺序,但它取决于您要执行的qyeries。通过这种方式,您将每天跟踪文章中的唯一IP。

答案 3 :(得分:0)

主键唯一标识一行。一个表最多只能有一个主键,但不止一个唯一键。您获得的输出清楚地证明了这一点,因为您将article_id作为主键