Oracle更新视图

要了解是否可以修改固有可更新视图的列以及可以修改的方式,请查询 USER_UPDATABLE_COLUMNS 数据字典视图.

select * from user_updatable_columns where table_name='view_name'

附带视图简介

创建和查询视图

视图是可在数据库中创建的已保存的查询。 单个视图可以引用一个或多个表。 而且,与表一样,视图由数据行和列组成。 可以使用视图作为查询源,其方式与表相同。 但是,视图不会永久存储数据;视图的定义在运行时解压缩,并查询源对象。

表和视图之间的明显相似性提供了一个重要优势。 应用程序可以编写为使用视图而不是基础表,从而防止应用程序对表进行更改。 这会为数据提供一层额外的安全性。

只要视图继续向调用应用程序呈现相同的结构,应用程序也会收到一致的结果。 这样,视图就可以被视为数据库的应用程序编程接口 (API),以检索数据。

视图必须由数据库开发人员或在数据库中具有相应权限的管理员创建。

创建视图

若要创建视图,请使用 CREATE VIEW 语句命名并存储单个 SELECT 语句。 可以使用以下语法创建视图:

CREATE VIEW  [] 
[WITH ]
AS select_statement;

 除非视图使用 TOP、OFFSET/FETCH 或 FOR XML 元素,否则视图定义中不允许 ORDER BY 子句。

例如,若要基于包含多个表的自定义 SELECT 语句创建名为 Sales.CustOrders 的视图,可以编写以下查询:

CREATE VIEW Sales.CustOrders
AS
SELECT
  O.custid, 
  DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0) AS ordermonth,
  SUM(OD.qty) AS qty
FROM Sales.Orders AS O
  JOIN Sales.OrderDetails AS OD
    ON OD.orderid = O.orderid
GROUP BY custid, DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0);

请注意,示例中大多数代码都由 SELECT 语句组成。 视图定义中的 SELECT 语句可以复杂,也可以简单,具体取决于你的需求。

查询视图

若要查询视图并从中检索结果,请在 SELECT 语句的 FROM 子句中引用它,就像引用表一样。 例如,若要在 Sales.CustOrders 视图中返回客户 ID、订单月份和每个订单中的项数量,可以运行以下查询:

SELECT custid, ordermonth, qty
FROM Sales.CustOrders;

参见:

使用临时表 - Training | Microsoft Learn

在 Oracle 中,是否可以通过视图插入或更新记录? - 行业资讯 - 电子产品设计开发与电子技术学习交流!

你可能感兴趣的:(oracle,数据库)