PostgreSQL ALTER VIEW

2021-09-08 17:21 更新

ALTER VIEW — 更改一個(gè)視圖的定義

大綱

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 [, ... ] )

描述

ALTER VIEW更改一個(gè)視圖的多種輔助屬性(如果想要 修改視圖的查詢定義,應(yīng)使用CREATE OR REPLACE VIEW)。

要使用ALTER VIEW,你必須擁有該視圖。要更改一個(gè)視圖的模式, 你還必須具有新模式上的CREATE特權(quán)。要更改擁有者,你還必須 是新?lián)碛薪巧囊粋€(gè)直接或者間接成員,并且該角色必須具有該視圖的模式上的 CREATE特權(quán)(這些限制強(qiáng)制修改擁有者不能做一些通過刪除和重 建視圖做不到的事情。不過,一個(gè)超級用戶怎么都能更改任何視圖的所有權(quán)。)。

參數(shù)

name

一個(gè)現(xiàn)有視圖的名稱(可以是模式限定的)。

column_name

現(xiàn)有列的名稱。

new_column_name

現(xiàn)有列的新名稱。

IF EXISTS

該視圖不存在時(shí)不要拋出一個(gè)錯(cuò)誤。這種情況下會發(fā)出一個(gè)提示。

SET/DROP DEFAULT

這些形式為一個(gè)列設(shè)置或者移除默認(rèn)值。對于任何在該視圖上的 INSERT或者UPDATE命令,一個(gè)視圖列的默認(rèn)值 會在引用該視圖的任何規(guī)則或觸發(fā)器之前被替換進(jìn)來。因此,該視圖的默認(rèn)值將會 優(yōu)先于來自底層關(guān)系的任何默認(rèn)值。

new_owner

該視圖的新?lián)碛姓叩挠脩裘?/p>

new_name

該視圖的新名稱。

new_schema

該視圖的新模式。

SET ( view_option_name [= view_option_value] [, ... ] )
RESET ( view_option_name [, ... ] )

設(shè)置或者重置一個(gè)視圖選項(xiàng)。當(dāng)前支持的選項(xiàng)有:

check_option (enum)

更改該視圖的檢查選項(xiàng)。值必須是local 或者cascaded。

security_barrier (boolean)

更改該視圖的安全屏障屬性。值必須是一個(gè)布爾值,如 true或者false

注解

由于歷史原因,ALTER TABLE也可以用于視圖,但是 只允許等效于以上形式的ALTER TABLE變體用于視圖。

示例

把視圖foo重命名為 bar

ALTER VIEW foo RENAME TO bar;

要為一個(gè)可更新視圖附加一個(gè)默認(rèn)列值:

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 標(biāo)準(zhǔn)擴(kuò)展。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號