“外键约束”一词经常被抛到一边。我只是想澄清它的确切含义。我们有一个雇员表和一个分支表。Employees表是首先创建的,但它应该对branch_id有一个外键约束,该约束引用branches表上id的主(代理)键:
CREATE TABLE employees (
id INT AUTO_INCREMENT,
first_name VARCHAR(40),
last_name VARCHAR(40),
birth_day DATE,
sex BOOLEAN,
salary INT,
supervisor_id INT,
branch_id INT,
PRIMARY KEY(id)
)
CREATE TABLE branches (
id INT AUTO_INCREMENT,
branch_name VARCHAR(40),
manager_id INT,
manager_start_date DATE,
PRIMARY KEY(id),
FOREIGN KEY(manager_id) REFERENCES employees(id) ON DELETE SET NULL
)
现在我们添加了外键约束:
ALTER TABLE employees
ADD FOREIGN KEY(branch_id)
REFERENCES branches(id)
ON DELETE SET NULL;
ALTER TABLE employees
ADD FOREIGN KEY(supervisor_id)
REFERENCES employees(id)
ON DELETE SET NULL;
注意这里我用
Add Foreign Key
而不是
Add Constraint constraint_name
. 下面是一个使用
ADD CONSTRAINT
:
ALTER TABLE users
ADD CONSTRAINT check_users_age
CHECK (age>=18 AND city='Philadelphia');
是
ADD FOREIGN KEY
和
ADD CONSTRAINT constraint_name
同义词?做
添加外键
,实际上,添加一个没有名称的约束?如果
添加外键
是否添加名称,如何在MySQL中找到它?