MySQL 唯一標識符是一種特殊的約束,用于確保表中的數據行不會出現重復值。它可以是一個列或多個列的組合。
CREATE TABLE students
(
id INT AUTO_INCREMENT,
name VARCHAR(50),
age INT,
PRIMARY KEY (id)
);
在上面的例子中,id 列是一個唯一標識符,它將確保每個學生記錄都有一個唯一的標識符。如果嘗試插入具有相同 id 的兩個記錄,MySQL 將返回一個錯誤。
INSERT INTO students (name, age) VALUES ('Alice', 20);
INSERT INTO students (name, age) VALUES ('Bob', 21);
INSERT INTO students (name, age) VALUES ('Alice', 22);
第三個插入將失敗,因為它違反了唯一性限制。
除了單個列的唯一標識符外,MySQL 還支持組合唯一標識符。這意味著可以將多個列聲明為唯一標識符,以確保組合值的唯一性。
CREATE TABLE orders
(
order_id INT AUTO_INCREMENT,
product_id INT,
customer_id INT,
quantity INT,
UNIQUE KEY order_product_customer (product_id, customer_id)
);
在上面的例子中,order_product_customer 列是一個組合唯一標識符,它將確保每個產品和客戶組合只能訂購一次。如果嘗試插入具有相同 product_id 和 customer_id 的兩個記錄,MySQL 將返回一個錯誤。
INSERT INTO orders (product_id, customer_id, quantity) VALUES (1001, 2001, 10);
INSERT INTO orders (product_id, customer_id, quantity) VALUES (1002, 2002, 20);
INSERT INTO orders (product_id, customer_id, quantity) VALUES (1001, 2001, 5);
第三個插入將失敗,因為它違反了唯一性限制。