可更新视图

在本教程中,我们将向您展示如何通过视图创建可更新视图并更新基础表中的数据。

MySQL可更新视图简介

在MySQL中,视图不仅是可查询的,而且是可更新的。这意味着您可以使用INSERTUPDATE语句通过可更新视图插入或更新基表的行。 另外,您可以使用DELETE语句通过视图删除底层表的行。

但是,要创建可更新视图,定义视图的SELECT语句不能包含以下任何元素:

如果使用TEMPTABLE算法创建视图,则无法更新视图。

请注意,有时可以使用内部连接创建基于多个表的可更新视图。

MySQL可更新视图示例

让我们先来看看如何创建一个可更新的视图。

首先,基于示例数据库(yiibaidb)中的offices表创建一个名为officeInfo的视图。该视图指的是offices表中的三列:officeCodephonecity

接下来,使用以下语句从officeInfo视图中查询数据:

执行上面查询语句,得到以下结果 -

然后,使用以下UPDATE语句通过officeInfo视图更改officeCode的值为:4的办公室电话号码。

最后,验证更改结果,通过执行以下查询来查询officeInfo视图中的数据:

检查可更新视图信息

通过从information_schema数据库中的views表查询is_updatable列来检查数据库中的视图是否可更新。

以下查询语句将查询yiibaidb数据库获取所有视图,并显示哪些视图是可更新的。

执行上面查询语句,得到以下结果 -

通过视图删除行

首先,创建一个名为items的表,在items表中插入一些行,并创建一个查询包含价格大于700的项的视图。

执行上面查询语句后,得到以下结果 -

其次,使用DELETE语句来删除id3的行。

MySQL返回一条消息,表示有1行受到影响。

第三步,再次通过视图检查数据。

第四步,还可以从基表items查询数据,以验证DELETE语句是否实际删除了该行。

如上面所示,ID3的行在基表中被删除。

在本教程中,我们向您展示了如何通过创建可更新视图,并更新基础表中的数据。

Last updated

Was this helpful?