Вы здесь

Полезные шпаргалки. Опции [WITH [CASCADED | LOCAL] CHECK OPTION

Для изменяемого представления можно указывать фразу WITH CHECK OPTION, позволяющую предотвращать "потерю строк" в представлениях. Так, если эта фраза указана, то при внесении изменений в таблицу будет проверен предикат, указанный в запросе, использованном для создания таблицы. Если предикат не возвращает значение TRUE, то изменения не будут внесены.

Например, если запрос создан оператором

CREATE VIEW v_tbl1 AS
(SELECT f1,f2, f3 FROM tbl1 WHERE f2>100)
WITH CHECK OPTION;,

то вставка строки не будет произведена:

INSERT INTO v_tbl1 (f1,f2,f3)
VALUES (1,50,'abc');

Фраза WITH CHECK OPTION может быть расширена до:

WITH CASCADED CHECK OPTION - предикаты проверяются во всех вложенных запросах;
WITH LOCAL CHECK OPTION - предикаты проверяются только в запросе, использованном для создания данного представления;

Так, для представления, созданного операторами

CREATE VIEW v_1 AS
(SELECT f1,f2, f3 FROM tbl1 WHERE f2>100);,
CREATE VIEW v_2 AS
(SELECT f1,f2, f3 FROM v_1 WHERE f2>50)
WITH LOCAL CHECK OPTION;,

добавление строки будет выполнено:

INSERT INTO v_2 (f1,f2,f3)
VALUES (1,30,'abc');.

Эта строка будет добавлена в основную таблицу, но не будет видна в представлении, посредством которого она была добавлена.

По умолчанию предполагается, что для WITH CHECK OPTION используется фраза CASCADED.

menu_sertif: 

Post new comment

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
3 + 5 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.