Ответ
ON DELETE SET NULL — это действие, определяемое для ограничения внешнего ключа (FOREIGN KEY). Оно указывает СУБД автоматически установить значение NULL в столбце внешнего ключа дочерней таблицы при удалении связанной записи из родительской таблицы.
Ключевые условия и последствия:
- Столбец внешнего ключа должен допускать NULL (
NULLABLE). - Дочерние записи не удаляются, а лишь теряют связь с родителем.
- Полезно для опциональных связей, где существование дочерней сущности не зависит от родителя.
Пример создания таблиц в SQL:
CREATE TABLE Department (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE Employee (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT, -- Допускает NULL
FOREIGN KEY (department_id)
REFERENCES Department(id)
ON DELETE SET NULL -- Ключевая опция
);
Сценарий: При удалении отдела (DELETE FROM Department WHERE id = 5) у всех сотрудников, чье поле department_id было равно 5, это поле будет установлено в NULL. Сотрудники останутся в базе, но без привязки к отделу.
Альтернативные действия: ON DELETE CASCADE (удалить дочерние записи), ON DELETE RESTRICT/NO ACTION (запретить удаление родителя).