Используйте параметр ON DELETE CASCADE, чтобы указать, хотите ли вы удалять строки в дочерней таблице при удалении соответствующих строк в родительской таблице. Если вы не укажете каскадное удаление, поведение сервера базы данных по умолчанию не позволяет вам удалять данные в таблице, если другие таблицы ссылаются на нее.
Если вы укажете эту опцию, позже при удалении строки в родительской таблице сервер базы данных также удалит все строки, связанные с этой строкой (внешние ключи) в дочерней таблице. Основным преимуществом функции каскадного удаления является то, что она позволяет сократить количество операторов SQL, необходимых для выполнения действий по удалению.
Например, таблица all_candy содержит столбец candy_num в качестве первичного ключа. Таблица hard_candy ссылается на столбец candy_num как на внешний ключ. Следующая инструкция CREATE TABLE создает таблицу hard_candy с опцией cascading-delete для внешнего ключа:
CREATE TABLE all_candy
(candy_num SERIAL PRIMARY KEY,
candy_maker CHAR(25));
CREATE TABLE hard_candy
(candy_num INT,
candy_flavor CHAR(20),
FOREIGN KEY (candy_num) REFERENCES all_candy
ON DELETE CASCADE)
Поскольку для зависимой таблицы указано ON DELETE CASCADE, при удалении строки таблицы all_candy соответствующие строки таблицы hard_candy также удаляются. Информацию об синтаксических ограничениях и последствиях блокировки при удалении строк из таблиц с каскадным удалением см. В разделе Соображения, когда таблицы имеют каскадные удаления.
Источник: http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqls.doc/sqls292.htm