Запрос на удаление Access

Автор:
Раздел: Уроки




Сегодня поговорим на тему «Запрос на удаление Access». Запрос на удаление Access может быть использован для удаления данных в полях базовых таблиц. Запрос на удаление (Delete Query) позволяет удалить записи из одной таблицы или из нескольких взаимосвязанных таблиц, для связи с которыми установлен параметр обеспечения целостности данных каскадное удаление связанных записей (Cascade Delete Related Records). В схему данных запроса включается таблица, из которой должны удаляться записи, и связанные с ней таблицы, для полей которых требуется задать условия отбора удаляемых записей.

Задача. Пусть необходимо из справочника удалить запись о покупателе с кодом П003. В схеме данных базы Поставка товаров для всех связей установлен параметр обеспечения целостности каскадное удаление связанных записей (Cascade Delete Related Records), поэтому удаление записи из таблицы ПОКУПАТЕЛЬ повлечет за собой удаление из базы всех подчиненных ему записей на всех уровнях иерархии. Автоматически будут удалены все договоры этого покупателя, а также все накладные, выписанные по этим договорам, т. е. будут удалены связанные записи из таблиц ДОГОВОР, ПОСТАВКА_ПЛАН, НАКЛАДНАЯ и ОТГРУЗКА.

  1. Создайте запрос на выборку. Добавьте в схему данных запроса таблицу ПОКУПАТЕЛЬ, из которой удаляются записи.
  2. Преобразуйте запрос на выборку в запрос на удаление, выбрав на вкладке ленты Конструктор (Design) тип запроса Удаление (Delete) или выполнив команду контекстного меню запроса Тип запроса | Удаление (Query Type | Delete).
  3. После преобразования запроса в запрос на удаление Access в его бланке появляется строка Удаление (Delete) (рис. 4.49).
  4. Далее приступайте к формированию бланка запроса. Переместите символ звездочки (*) из списка полей таблицы ПОКУПАТЕЛЬ в бланк запроса. В строке Удаление (Delete) в столбце этого поля появляется значение Из (From).
  5. Для того чтобы задать условия отбора удаляемых записей, переместите с помощью мыши в бланк запроса поле КОД_ПОК из таблицы ПОКУПАТЕЛЬ. В строке Удаление (Delete) под именем этого поля появится значение Условие (Where). Запишите в строку Условие отбора (Criteria) для этого поля значение П003.
  6. Следует иметь в виду, что удаленные записи нельзя восстановить. Поэтому перед удалением записей выполните предварительный просмотр удаляемых записей, нажав кнопку Режим (View) на вкладке ленты.
  7.  Для удаления записей на вкладке ленты нажмите кнопку Выполнить (Run). При выполнении запроса будет сообщено об удалении одной записи. Откройте таблицу ПОКУПАТЕЛЬ и подчиненные ей таблицы на всех уровнях и убедитесь, что в них также удалены записи, связанные с этим покупателем.
    Результаты работы запроса на удаление зависят от отношений между таблицами и установленных в схеме базы данных параметров обеспечения целостности для их связей.

Запрос на удаление Access
Если параметры обеспечения целостности для связей таблицы не установлены вообще, то записи удаляются только в указанной в бланке запроса таблице и вне зависимости от ее логических связей.
Если в запросе объединяются две или более таблиц, находящихся в отношении 1 : М, то удалить можно только записи одной из таблиц на стороне «многие».
Если между таблицами, находящимися в отношении 1 : М, установлена связь с поддержанием целостности, но не задан параметр каскадное удаление связанных записей (Cascade Delete Related Records), сначала необходимо удалить записи подчиненной таблицы и только после этого можно выполнить удаление записей в главной таблице. То есть удаление записи главной таблицы возможно только, если в подчиненной таблице нет связанных записей. Если параметр каскадное удаление связанных записей (Cascade Delete Related Records) задан, то для удаления записей главной таблицы и связанных с ними подчиненных записей достаточно указать в запросе удаление записей главной таблицы.
Откройте запрос на удаление Access, представленный на рис. 4.49, в режиме конструктора и перейдите в режим SQL. Эквивалентная этому запросу инструкция DELETE будет записана следующим образом:
DELETE ПОКУПАТЕЛЬ.*, ПОКУПАТЕЛЬ.КОД_ПОК
FROM ПОКУПАТЕЛЬ
WHERE (((ПОКУПАТЕЛЬ.КОД_ПОК)=»П003″));
Инструкция DELETE удаляет из таблицы записи, удовлетворяющие условию отбора, заданному в предложении WHERE. Если в предложении FROM объединяется две или более таблиц, то удалить можно только записи одной из таблиц. Для того чтобы указать, из какой именно таблицы должны быть удалены записи, в список полей включается конструкция имя_таблицы.* (например, ПОСТАВКА_ПЛАН.*). Для однотабличного запроса эта конструкция может быть опущена.
Для закрепления темы «Запрос на удаление Access» смотрим видеоурок:

Оставить комментарий