ALTER VIEW更改一個視圖的多種輔助屬性。
簡介
ALTER VIEW更改一個視圖的多種輔助屬性(如果想要修改視圖的查詢定義,應使用CREATE OR REPLACE VIEW)。
要使用ALTER VIEW,你必須擁有該視圖。要更改一個視圖的模式, 你還必須具有新模式上的CREATE特權。要更改擁有者,你還必須是新擁有角色的一個直接或者間接成員,並且該角色必須具有該視圖的模式上的 CREATE特權(這些限制強制修改擁有者不能做一些通過刪除和重建視圖做不到的事情。不過,一個超級使用者怎麼都能更改任何視圖的所有權。)。
文法
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )參數
name一個現有視圖的名稱(可以是模式限定的)。column_name現有列的名稱。new_column_name現有列的新名稱。IF EXISTS該視圖不存在時不要拋出一個錯誤。這種情況下會發出一個提示。SET/DROP DEFAULT這些形式為一個列設定或者移除預設值。對於任何在該視圖上的INSERT或者UPDATE命令,一個視圖列的預設值會在引用該視圖的任何規則或觸發器之前被替換進來。因此,該視圖的預設值將會優先於來自底層關係的任何預設值。new_owner該視圖的新擁有者的使用者名稱。new_name該視圖的新名稱。new_schema該視圖的新模式。SET (view_option_name[=view_option_value] [, ... ] )RESET (view_option_name[, ... ] )設定或者重設一個視圖選項。當前支援的選項有:check_option(enum)更改該視圖的檢查選項。值必須是local或者cascaded。security_barrier(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 will receive a NULL
INSERT INTO a_view(id) VALUES(2); -- ts will receive the current time