Создание
запросов на удаления записей
Запросы на
удаление записей позволяют отобрать требуемые записи и удалить их за один прием.
Принцип создания такого запроса аналогичен созданию запроса на обновление, однако,
удаляя записи из связанных таблиц, необходимо помнить о том, что при этом не
должна нарушаться целостность данных.
Если две таблицы
связаны отношением "один-ко-многим", нельзя удалять записи из таблицы
"один" если в таблице "многие" присутствуют соответствующие
им записи. Сначала должны быть удалены записи в таблице "многие" и
только потом — соответствующие им записи в таблице "один". Для того
чтобы упростить этот процесс, Access позволяет при определении связей между
таблицами установить флажок
каскадное удаление связанных записей
(Cascade
Delete Related Records). Такой флажок установлен, например, для связи таблиц
"Заказы" (Orders) и "Заказано" (Order Details). Действительно,
если требуется удалить из базы данных какой-то заказ, должны быть удалены не
только запись об этом заказе в таблице "Заказы", но ч все позиции
данного заказа в таблице "Заказано".
Для создания
запроса на удаления мы воспользуемся уже имеющимся запросом на добавление записей
"Копирование заказов".
Рис. 8.11.
Запрос на удаление записей из таблицы "Заказы"
Однако такое
каскадное удаление записей не всегда возможно. Например, для рассмотренной нами
в предыдущем разделе связи таблиц "Сотрудники" и "Заказы"
нельзя устанавливать флажок
каскадное удаление связанных записей
(Cascade
Delete Related Records), т. к. удаление записи о сотруднике из таблицы "Сотрудники"
не должно повлечь за собой удаление всех его заказов. Если вы попытаетесь удалить
какую-либо запись о сотруднике и в таблице "Заказы" (Orders) окажутся
заказы, принятые этим сотрудником, Access выдаст сообщение об ошибке (рис. 8.12).
Рис. 8.12.
Запрос на удаление
Замечание
Для того чтобы выполнялась автоматическая проверка целостности данных, не забудьте для всех связей в базе данных установить флажок Обеспечение целостности данных (Enforce Referential Integrity).