在 MySQL 數據庫中,我們有時候需要讓多列的值組合在一起唯一。這時候,我們就需要使用多個列的唯一約束了。
我們可以通過在創建表時使用 UNIQUE 關鍵字來為某些列創建唯一約束。
CREATE TABLE students ( id INT, name VARCHAR(50), age INT, UNIQUE (name, age) );
如上述代碼所示,我們為學生表創建了一個唯一約束,該約束由 “name” 和 “age” 兩個列的值組合而成。這就保證了在該表中,每個學生的姓名和年齡的組合都是唯一的。
在插入數據時,如果有重復的組合出現,數據庫會拋出錯誤:
INSERT INTO students (id, name, age) VALUES (1, 'John', 18), (2, 'Jane', 18), (3, 'John', 18);
第三個插入語句就會因為重復的組合而失敗。
需要注意的是,唯一約束只會對每組值進行比較,若其中某個值不同,則不會拋出錯誤。
INSERT INTO students (id, name, age) VALUES (1, 'John', 18), (2, 'Jane', 18), (3, 'John', 19);
以上代碼中,第三個插入語句雖然與第一個有相同的 “name”,但因為 “age” 不同,所以不會拋出錯誤。
總之,多個列的唯一約束可以有效地保證數據的唯一性,避免重復數據的出現。