Использование ключевого слова WITH CHECK OPTION в инструкциях DML

Ключевое слово WITH CHECK OPTION запрещает изменение строк, которых нет в подзапросе.

Ключевое слово WITH CHECK OPTION указывает, что если в инструкциях INSERT, UPDATE или DELETE вместо таблицы используется подзапрос, для этой таблицы не разрешаются никакие изменения, создающие строки, которые не включены в подзапрос.

В примере на рисунке показывается, как использовать встроенное представление с ключевым словом WITH CHECK OPTION. Инструкция INSERT предотвращает создание записей в табли- це LOC для города, который не находится в Европе.

Следующий пример выполняется успешно благодаря изменениям в списке VALUES.

    INSERT INTO (SELECT location_id, city, country_id     FROM loc     WHERE country_id IN     (SELECT country_id     FROM countries     NATURAL JOIN regions     WHERE region_name = 'Europe')     WITH CHECK OPTION)

 

VALUES (3500, 'Berlin', 'DE');

Применение встроенного представления с ключевым словом WITH CHECK OPTION предоставляет простой способ защиты от изменений в таблице.

Чтобы предотвратить создание записей для неевропейского города, можно также использовать представление базы данных, выполнив следующие шаги:

  1. Создайте представление базы данных:

    CREATE OR REPLACE VIEW european_cities AS SELECT location_id, city, country_id FROM locations WHERE country_id in     (SELECT country_id     FROM countries     NATURAL JOIN regions     WHERE region_name = 'Europe')

 

WITH CHECK OPTION;

  1. Проверьте результаты путем вставки данных:

    INSERT INTO european_cities
VALUES (3400,'New York','US');

При выполнении второго шага возникают такие же ошибки, как показанные на рисунке.

Далее: Функции DBTIMEZONE и SESSIONTIMEZONE

Related Posts