ALTER VIEW — 更改檢視的定義
ALTER VIEW [ IF EXISTS ]nameALTER [ COLUMN ]column_nameSET DEFAULTexpressionALTER VIEW [ IF EXISTS ]nameALTER [ COLUMN ]column_nameDROP DEFAULT ALTER VIEW [ IF EXISTS ]nameOWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER VIEW [ IF EXISTS ]nameRENAME [ COLUMN ]column_nameTOnew_column_nameALTER VIEW [ IF EXISTS ]nameRENAME TOnew_nameALTER VIEW [ IF EXISTS ]nameSET SCHEMAnew_schemaALTER VIEW [ IF EXISTS ]nameSET (view_option_name[=view_option_value] [, ... ] ) ALTER VIEW [ IF EXISTS ]nameRESET (view_option_name[, ... ] )
ALTER VIEW 更改檢視的各種輔助屬性。(如果您想修改檢視的定義查詢,請使用 CREATE OR REPLACE VIEW。)
要使用 ALTER VIEW,您必須擁有該檢視。要更改檢視的模式,您還必須在新模式上擁有 CREATE 許可權。要更改所有者,您必須能夠 SET ROLE 到新的所有者角色,並且該角色必須擁有檢視模式的 CREATE 許可權。(這些限制確保了更改所有者不會執行您透過刪除和重新建立檢視無法完成的操作。但是,超級使用者仍然可以更改任何檢視的所有權。)
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。
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 will receive a NULL INSERT INTO a_view(id) VALUES(2); -- ts will receive the current time
ALTER VIEW 是 PostgreSQL 對 SQL 標準的擴充套件。
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步說明的內容,請使用 此表格 來報告文件問題。