Sobes.tech
Назад к вопросам
Junior — Middle
59

Объясните механизм действия ON DELETE SET NULL в контексте связей между таблицами базы данных.

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

ON DELETE SET NULL — это правило поведения внешнего ключа в базе данных при удалении связанной записи из родительской таблицы.

Если в дочерней таблице есть внешний ключ, ссылающийся на родительскую таблицу, и в родительской таблице удаляется запись, на которую ссылается внешний ключ, то вместо удаления или отказа операции, значение внешнего ключа в дочерней таблице устанавливается в NULL.

Это позволяет сохранить дочерние записи, но указывает, что связь с родительской записью теперь отсутствует.

Пример:

Таблица orders с внешним ключом customer_id, ссылающимся на таблицу customers:

ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(id)
ON DELETE SET NULL;

Если удалить клиента из customers, то в orders.customer_id для связанных заказов будет записано NULL.

Это полезно, когда удаление родителя не должно приводить к удалению дочерних записей, но связь должна быть разорвана.