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

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

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

Ключевое слово 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

Статьи по теме
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)