我有一個表中有兩個int值是ID。在他們自己這些ID可以在表中顯示任何次數,但他們在一起應該只出現一次。MySQL - 使一對值唯一
有沒有辦法使一對值獨一無二,並且仍然允許多次顯示各個值?
作爲後續,如果這是可能的,那麼這對值可以用作關鍵嗎?我目前有第三列爲我的密鑰的唯一自動增量值。
我有一個表中有兩個int值是ID。在他們自己這些ID可以在表中顯示任何次數,但他們在一起應該只出現一次。MySQL - 使一對值唯一
有沒有辦法使一對值獨一無二,並且仍然允許多次顯示各個值?
作爲後續,如果這是可能的,那麼這對值可以用作關鍵嗎?我目前有第三列爲我的密鑰的唯一自動增量值。
這就是所謂的複合鍵。
如果你想你的實際PK更改爲複合之一,使用
Alter table <your table> drop PRIMARY KEY;
Alter table <your table> drop COLUMN <your autoincremented column>;
Alter table <your table> add [constraint <constraint name>] PRIMARY KEY (<col1>, <col2>);
你也可以添加一個唯一約束(你的PK將是相同的,獨特的雙...將不得不是獨一無二的)。個人而言,我會推薦第二種解決方案(簡單PK +唯一約束),但這只是個人觀點。你可以谷歌搜索關於複合鍵的優點和缺點。
[]
之間的部分是可選的。
編輯
如果你想做到這一點在創建表語句
對於複合PK
CREATE TABLE Test(
id1 int NOT NULL,
id2 int NOT NULL,
id3 int NOT NULL,
PRIMARY KEY (id1, id2)
);
對於唯一索引
CREATE TABLE Test1(
id1 int NOT NULL AUTO_INCREMENT,
id2 int NOT NULL,
id3 int NOT NULL,
PRIMARY KEY (id1),
UNIQUE KEY (id2, id3)
);
+1時,我發現你需要'DROP KEY'來指定組合鍵,這可以幫助像我這樣的人瞭解這個新功能 –
你還添加了一個例子,這是如何在'CREATE TABLE'語句中完成的? –
@TomášZato見編輯。 –
添加primary key (col1, col2)
您創建表定義
試試這個:ALTER TABLE table_name ADD CONSTRAINT uc_name UNIQUE (col1,col2)
我以爲是'*更好的方法*'; mysql至少會阻止這種意圖並將其轉換爲'UNIQUE KEY' ... ...與之相同:'ALTER TABLE面板ADD UNIQUE KEY name_label_UNIQUE(name,label);'。另外,當你添加:'CONSTRAINT ... UNIQUE' * ho hum * – will
什麼是你的意圖這裏?爲了保持組合的獨特性,還是需要使用兩者來標識行? –