MySQL – 唯一外键
在本文中,我们将介绍MySQL中唯一外键的概念与用法。唯一外键是指具有唯一值的外键约束。它在数据库中用于确保外键表中的每个记录具有唯一的值。
阅读更多:MySQL 教程
唯一外键的语法
在MySQL中创建唯一外键的语法如下:
ALTER TABLE child_table
ADD CONSTRAINT unique_constraint_name UNIQUE (fk_column)
例如,如果我们想要确保子表employees中的employee_code列具有唯一的值,我们可以这样写:
ALTER TABLE employees
ADD CONSTRAINT employees_employee_code_uq UNIQUE (employee_code)
唯一外键的示例
假设我们有两个表,employees和departments。每个部门有一个编号(department_code),每个员工都隶属于某个部门(department_code作为外键)。我们希望每个部门的编号只能出现一次,并且每个员工的隶属部门是存在的。
CREATE TABLE departments (
department_code INT PRIMARY KEY,
department_name VARCHAR(50)
);
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
department_code INT,
FOREIGN KEY (department_code)
REFERENCES departments(department_code),
CONSTRAINT employee_department_code_uq UNIQUE (department_code)
);
我们可以在employees表上创建一个唯一外键约束,确保department_code列中的值不重复。如果我们试图向表中添加一行重复值,MySQL会返回一个错误。
INSERT INTO departments (department_code, department_name) VALUES (1, 'Sales');
INSERT INTO departments (department_code, department_name) VALUES (2, 'Marketing');
INSERT INTO departments (department_code, department_name) VALUES (3, 'Finance');
INSERT INTO employees (id, name, department_code) VALUES (1, 'John Doe', 1);
INSERT INTO employees (id, name, department_code) VALUES (2, 'Jane Smith', 2);
INSERT INTO employees (id, name, department_code) VALUES (3, 'Bob Johnson', 3);
INSERT INTO employees (id, name, department_code) VALUES (4, 'Sue Wong', 1); -- 返回错误
总结
在MySQL中,唯一外键是用于确保外键表中的每个记录具有唯一值的外键约束。它对于维护数据完整性非常有用,可以确保在子表中引用父表中的一个特定值时,该值在父表中确实存在,并且只存在一次。通过使用唯一外键,我们可以更好地管理我们的数据库,并确保数据的准确性。