Термин «ограничение внешнего ключа» часто отбрасывается.И я просто хочу уточнить, что это точное значение.У нас есть стол сотрудников и стол филиалов.Таблица сотрудников была создана первой, но она должна иметь ограничение внешнего ключа для branch_id, которое ссылается на первичный (суррогатный) ключ 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
синонимами?Действительно ли ADD FOREIGN KEY
добавляет ограничение без имени?И если ADD FOREIGN KEY
добавляет имя, как я могу найти его в mysql?