ALTER VIEW
ALTER VIEW â измениÑÑ Ð¾Ð¿Ñеделение пÑедÑÑавлениÑ
СинÑакÑиÑ
ALTER VIEW [ IF EXISTS ]имÑALTER [ COLUMN ]имÑ_ÑÑолбÑаSET DEFAULTвÑÑажениеALTER VIEW [ IF EXISTS ]имÑALTER [ COLUMN ]имÑ_ÑÑолбÑаDROP DEFAULT ALTER VIEW [ IF EXISTS ]имÑOWNER TO {новÑй_владелеÑ| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER VIEW [ IF EXISTS ]имÑRENAME [ COLUMN ]имÑ_ÑÑолбÑаTOновое_имÑ_ÑÑолбÑаALTER VIEW [ IF EXISTS ]имÑRENAME TOновое_имÑALTER VIEW [ IF EXISTS ]имÑSET SCHEMAноваÑ_ÑÑ ÐµÐ¼Ð°ALTER VIEW [ IF EXISTS ]имÑSET (имÑ_паÑамеÑÑа_пÑедÑÑавлениÑ[=знаÑение_паÑамеÑÑа_пÑедÑÑавлениÑ] [, ... ] ) ALTER VIEW [ IF EXISTS ]имÑRESET (имÑ_паÑамеÑÑа_пÑедÑÑавлениÑ[, ... ] )
ÐпиÑание
ALTER VIEW изменÑÐµÑ ÑазлиÑнÑе дополниÑелÑнÑе ÑвойÑÑва пÑедÑÑавлениÑ. (ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑоÑа, опÑеделÑÑÑего пÑедÑÑавление, иÑполÑзÑйÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE OR REPLACE VIEW.)
ÐÑполниÑÑ ALTER VIEW Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¿ÑедÑÑавлениÑ. ЧÑÐ¾Ð±Ñ ÑмениÑÑ ÑÑ
ÐµÐ¼Ñ Ð¿ÑедÑÑавлениÑ, необÑ
одимо Ñакже имеÑÑ Ð¿Ñаво CREATE в новой ÑÑ
еме. ЧÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, ÑÑебÑеÑÑÑ Ñакже бÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑм или опоÑÑедованнÑм Ñленом новой Ñоли, а ÑÑа ÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° имеÑÑ Ð¿Ñаво CREATE в ÑÑ
еме пÑедÑÑавлениÑ. (С Ñакими огÑаниÑениÑми пÑи Ñмене владелÑÑа не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¸Ñего Ñакого, ÑÑо нелÑÐ·Ñ Ð±Ñло Ð±Ñ ÑделаÑÑ, Ð¸Ð¼ÐµÑ Ð¿Ñаво ÑдалиÑÑ Ð¸ Ð²Ð½Ð¾Ð²Ñ ÑоздаÑÑ Ð¿ÑедÑÑавление. Ðднако ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² лÑбом ÑлÑÑае.)
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑего пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹).
имÑ_ÑÑолбÑаÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа.
новое_имÑ_ÑÑолбÑаÐовое Ð¸Ð¼Ñ ÑÑÑеÑÑвÑÑÑего ÑÑолбÑа.
IF EXISTSÐе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли пÑедÑÑавление не ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание.
SET/DROP DEFAULTÐÑи ÑоÑÐ¼Ñ ÑÑÑанавливаÑÑ Ð¸Ð»Ð¸ ÑдалÑÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð² заданном ÑÑолбÑе. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑÑавлÑеÑÑÑ Ð² командÑ
INSERTиUPDATE, вноÑÑÑие даннÑе в пÑедÑÑавление, до пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¸Ñ -либо пÑавил или ÑÑиггеÑов в ÑÑом пÑедÑÑавлении. Таким обÑазом, знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð² пÑедÑÑавлении имеÑÑ Ð¿ÑиоÑиÑÐµÑ Ð¿ÐµÑед знаÑениÑми по ÑмолÑÐ°Ð½Ð¸Ñ Ð² нижележаÑÐ¸Ñ Ð¾ÑноÑениÑÑ .новÑй_владелеÑÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, назнаÑаемого новÑм владелÑÑем пÑедÑÑавлениÑ.
новое_имÑÐовое Ð¸Ð¼Ñ Ð¿ÑедÑÑавлениÑ.
новаÑ_ÑÑ ÐµÐ¼Ð°ÐÐ¾Ð²Ð°Ñ ÑÑ ÐµÐ¼Ð° пÑедÑÑавлениÑ.
SET (имÑ_паÑамеÑÑа_пÑедÑÑавлениÑ[=знаÑение_паÑамеÑÑа_пÑедÑÑавлениÑ] [, ... ] )RESET (имÑ_паÑамеÑÑа_пÑедÑÑавлениÑ[, ... ] )УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¿Ð°ÑамеÑÑÑ Ð¿ÑедÑÑавлениÑ. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð¿Ð°ÑамеÑÑÑ:
check_option(enum)ÐзменÑÐµÑ Ð¿Ð°ÑамеÑÑ Ð¿ÑовеÑки пÑедÑÑавлениÑ. ÐопÑÑÑимÑе знаÑениÑ:
local(локалÑнаÑ) илиcascaded(каÑкаднаÑ).security_barrier(boolean)ÐзменÑÐµÑ ÑвойÑÑво пÑедÑÑавлениÑ, вклÑÑаÑÑее баÑÑÐµÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи. ÐнаÑение должно бÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑким:
trueилиfalse.security_invoker(boolean)ÐзменÑÐµÑ ÑвойÑÑво пÑедÑÑавлениÑ, вклÑÑаÑÑее конÑекÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи вÑзÑваÑÑего. ÐнаÑение должно бÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑким:
trueилиfalse.
ÐÑимеÑаниÑ
Ðо иÑÑоÑиÑеÑким пÑиÑинам ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER TABLE можно иÑполÑзоваÑÑ Ð¸ Ñ Ð¿ÑедÑÑавлениÑми; но единÑÑвенно допÑÑÑимÑе Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¿ÑедÑÑавлениÑми ваÑиаÑии ALTER TABLE ÑавноÑилÑÐ½Ñ Ð²ÑÑепеÑеÑиÑленнÑм командам.
ÐÑимеÑÑ
ÐеÑеименование пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ foo в bar:
ALTER VIEW foo RENAME TO bar;
Ðобавление знаÑÐµÐ½Ð¸Ñ ÑÑолбÑа по ÑмолÑÐ°Ð½Ð¸Ñ Ð² изменÑемое пÑедÑÑавление:
CREATE TABLE base_table (id int, ts timestamptz); CREATE VIEW a_view AS SELECT * FROM base_table; ALTER VIEW a_view ALTER COLUMN ts SET DEFAULT now(); INSERT INTO base_table(id) VALUES(1); -- в ts окажеÑÑÑ Ð·Ð½Ð°Ñение NULL INSERT INTO a_view(id) VALUES(2); -- в ts окажеÑÑÑ ÑекÑÑее вÑемÑ
СовмеÑÑимоÑÑÑ
ALTER VIEW â Ñеализованное в PostgreSQL ÑаÑÑиÑение ÑÑандаÑÑа SQL.