PostgreSQL 教程: 可更新视图

九月 8, 2023

摘要:在本教程中,我们将讨论可更新视图的要求,并向您展示如何在 PostgreSQL 中创建可更新视图。

当 PostgreSQL 视图满足以下条件时,它是可更新的:

可更新视图可能包含可更新列和不可更新列。如果您尝试插入或更新不可更新的列,PostgreSQL 将引发错误。

当您执行 INSERTUPDATEDELETE 等更新操作时,PosgreSQL 会将此语句转换为基础表的相应语句。

如果视图的定义查询中有WHERE条件,您仍然可以更新或删除通过视图不可见的行。但是,如果您想避免这种情况,可以在定义视图时使用CHECK OPTION

当您执行更新操作时,您必须对视图具有相应的权限,但不需要对基础表具有权限。但是,视图所有者必须具有基础表的相关权限。

PostgreSQL 可更新视图示例

首先,使用CREATE VIEW语句创建一个新的可更新视图,名为usa_cities。该视图包含city表中位于美国(国家/地区 ID 为 103)的所有城市。

CREATE VIEW usa_cities AS SELECT
	city,
	country_id
FROM
	city
WHERE
	country_id = 103;

接下来,通过执行以下SELECT语句检查usa_cities视图中的数据:

SELECT
	*
FROM
	usa_cities;

然后,使用以下INSERT语句通过usa_cities视图将新城市插入city表中:

INSERT INTO usa_cities (city, country_id)
VALUES('San Jose', 103);

之后查看city表中的内容:

SELECT
	city,
	country_id
FROM
	city
WHERE
	country_id = 103
ORDER BY
	last_update DESC;

我们在city表中添加了一个新条目。

PostgreSQL Updatable View - new city added

最后,删除已经通过usa_cities视图添加的条目。

DELETE
FROM
	usa_cities
WHERE
	city = 'San Jose';

该条目已通过usa_cities视图从city表中删除。

在本教程中,我们展示了如何创建 PostgreSQL 可更新视图,并向您介绍了视图要能可以更新必须满足的条件。