MySQL Alter表添加与另一列一起唯一的列

时间:2012-09-01 19:30:03

标签: mysql sql

我有这样一张桌子:

+---------+--------------+------+-----+-------------------+-----------------------------+
| Field   | Type         | Null | Key | Default           | Extra                       |
+---------+--------------+------+-----+-------------------+-----------------------------+
| id      | int(11)      | NO   | PRI | NULL              | auto_increment              |
| url     | varchar(255) | YES  | UNI | NULL              |                             |
| ts      | timestamp    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| content | longblob     | YES  |     | NULL              |                             |
| source  | varchar(255) | YES  |     | NULL              |                             |
| state   | int(11)      | NO   |     | 0                 |                             |
+---------+--------------+------+-----+-------------------+-----------------------------+

我希望id保持唯一的PRIMARY KEY,并且我想添加字段“VERSION”,这将是唯一的。

我想要的是创建独特的唯一对(url,version),但不能单独创建。我怎样才能做到这一点?我应该像这样添加字段版本,更改网址以使其不唯一,然后添加约束吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您要查找的是将相同网址的多个版本一起存储在表格中,那么您需要做的是:

  1. 删除网址上的唯一约束
  2. 添加非唯一列版本(此处假设整数)
  3. 在(url,version)上创建唯一约束或索引。我会建议一个索引,因为我认为应该更快地进行独特的检查。