Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Обобщенный синтаксис инструкции delete

Обобщенный синтаксис инструкции deleteИнструкцию DELETE можно по праву назвать самой простой в языке DML. В ней нужно указать только таблицу, в которой будут удаляться записи, и (что необязательно) критерий отбора строк для удаления. Однако пусть простота синтаксиса инструкции не вводит вас в заблуждение. Инструкция DELETE при неуважительном к ней отношении способна вызвать большие разрушения в базе данных. К примеру, если опустить в инструкции предложение WHERE, вся доступная в таблице информация будет удалена. Очень часто некорректно сформированное условие отбора удаляемых строк приводит к необходимости их восстановления, что требует больших затрат времени. Приведенная ниже инструкция удаляет информацию о торговом представителе из таблицы Инструкция DELETE не налагает таких ограничений в вопросе целостности данных, как INSERT или UPDATE. Ограничения PRIMARY KEY, UNIQUE или NOT NULL не способны помешать удалению строк. Однако следует внимательно относиться к ограничениям ссылочной целостности. К примеру, вам не удастся удалить строку, на которую ссылаются внешние ключи других таблиц, если, конечно, при создании таблицы не был применен параметр ON DELETE CASCADE. В последнем случае вместе с удаляемой из главной таблицы строкой будут удалены и все ссылающиеся на нее строки других таблиц. Такой режим работы опасен, особенно при некорректно сформированном условии WHERE, так что относитесь к параметру ON DELETE CASCADE с осторожностью. К примеру, в базе данных ACME на таблицу клиентов (CUSTOMER) ссылается таблица заказов (ORDERS), на которую, в свою очередь, ссылается таблица доставок (SHIPMENT). Так что при удалении записи о клиенте вместе с ней отойдет в мир иной и информация о его заказах и связанных с ними поставках. А теперь представьте себе, что при этом еще опущено предложение WHERE. На рис. 6.3 проиллюстрирован приведенный пример. Еще одним не менее опасным параметром подержания ссылочной целостности является ON DELETE SET NULL (определенный стандартом SQL:2003 и реализациями Oracle и DB2). При этом записи связанных таблиц не удаляются, однако соответствующим полям столбца внешнего ключа других таблиц присваивается значение Если ограничение ссылочной целостности установлено с параметром NO ACTION (он применяется по умолчанию) и на столбец существует ссылка, инструкция DELETE завершится ошибкой.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *