是的,在MySQL中,主键(PRIMARY KEY)必须是唯一的。这是关系型数据库的基本设计原则之一。
-- 单列主键
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL
);
-- 复合主键(多列组合必须是唯一的)
CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id)
);
-- 自增主键(常见用法)
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
如果尝试插入或更新数据导致主键重复,MySQL会报错:
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
如果您需要一个允许重复的索引,应该使用普通索引(INDEX)或唯一索引(UNIQUE KEY)而不是主键。