Ключевое слово 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)
|
Применение встроенного представления с ключевым словом WITH CHECK OPTION
предоставляет простой способ защиты от изменений в таблице.
Чтобы предотвратить создание записей для неевропейского города, можно также использовать представление базы данных, выполнив следующие шаги:
-
Создайте представление базы данных:
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')
|
-
Проверьте результаты путем вставки данных:
INSERT INTO european_cities |
При выполнении второго шага возникают такие же ошибки, как показанные на рисунке.
Далее: Функции DBTIMEZONE и SESSIONTIMEZONE