Ответ
Каскадное удаление — это опция ограничения внешнего ключа (FOREIGN KEY) в реляционных базах данных. При её использовании удаление записи из родительской (главной) таблицы автоматически приводит к удалению всех связанных с ней записей в дочерней (подчинённой) таблице.
Цель и пример:
Гарантирует ссылочную целостность данных, предотвращая появление "висячих" ссылок (orphaned records) в дочерней таблице.
-- Родительская таблица
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Name VARCHAR(100)
);
-- Дочерняя таблица с каскадным удалением
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE,
FOREIGN KEY (CustomerID)
REFERENCES Customers(CustomerID)
ON DELETE CASCADE -- Ключевая опция
);
Что произойдёт:
DELETE FROM Customers WHERE CustomerID = 123;
Эта команда удалит клиента с ID 123 из таблицы Customers и все его заказы из таблицы Orders.
Альтернативы и важные замечания:
ON DELETE SET NULL: Внешний ключ в дочерней таблице устанавливается вNULL.ON DELETE SET DEFAULT: Внешний ключ устанавливается в значение по умолчанию.ON DELETE NO ACTION/RESTRICT: Удаление родительской записи запрещено, если существуют зависимые дочерние записи (стандартное поведение во многих СУБД).- Осторожность:
CASCADEможет привести к масштабной и неожиданной потере данных. Всегда проверяйте связи перед выполнением удаления.