SQL - 如何在特定条件下防止重复?

时间:2011-06-24 04:48:27

标签: mysql insert duplicates

通常,我们可以使用唯一键或主键来防止这种情况,但在我的情况下。我正在创建一个像这样的MyFavorite表:

---------------------------------------------------------
|   UserName       |  FavoriteLink                      |
---------------------------------------------------------
|   Ryan           |  http://www.google.com             |
---------------------------------------------------------
|   Ryan           |  http://www.yahoo.com              |
---------------------------------------------------------
|   Joyce          |  http://www.google.com             |
---------------------------------------------------------
|   Joyce          |  http://www.cnn.com                |
---------------------------------------------------------

因此,每个用户都可以拥有很多偏好链接,但是他们不应该有重复的偏好链接,例如,Ryan不应该为http://www.google.com设置两个偏好链接。但是对于这个表格,FavoriteLink字段可能是重复的,因为Ryan和Joyce都是http://www.google.com的偏好链接。

这是一个问题:如何在没有特定人员的重复收藏夹的情况下将数据插入此表?

2 个答案:

答案 0 :(得分:4)

复合键。

CREATE TABLE userlinks (
  user VARCHAR(255),
  link VARCHAR(255),
  PRIMARY KEY (user, link)
)

CREATE TABLE userlinks (
  id INTEGER AUTO_INCREMENT PRIMARY KEY,
  user VARCHAR(255),
  link VARCHAR(255),
  UNIQUE KEY (user, link)
)

取决于你想要的确切内容。

答案 1 :(得分:3)

您可以添加复合唯一索引。

CREATE UNIQUE INDEX username_favorite_uniq ON yourTable (UserName, FavoriteLink)