2012-09-01 43 views
1

我有这样一个表:的MySQL修改表加一起是唯一与另一列列

+---------+--------------+------+-----+-------------------+-----------------------------+ 
| 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留在唯一的主键,我想补充场“版“这将是独一无二的。

我想要的是创造独特的一对(网址,版本)唯一在一起,但不是分开。我怎样才能做到这一点?我应该像这样添加字段版本吗?请改变url,使其不是唯一的,然后添加约束?

在此先感谢!

+0

你可以创建两列,它有一对独特的价值,但你可以通过添加一列'ISVersion'放在一起,如果这个字段的值是url,它将成为'False',否则它可以存储在这个字段中TRUE;。 –

回答

1

如果你正在寻找的是一起存储相同的URL的多个版本在表中,那么是的,你需要做的是:

  1. 砸在URL中的唯一约束
  2. 添加非唯一列版本(此处假设为整数)
  3. 在(url,版本)上创建唯一约束或索引。我会建议一个索引,因为我认为这应该使独特的检查更快。