2012-09-01 73 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,版本)上創建唯一約束或索引。我會建議一個索引,因爲我認爲這應該使獨特的檢查更快。