通过视图插入行

您可通过 single-table 视图插入数据,如果您有对该视图的 Insert 权限。 要执行此操作,可仅从一表定义 SELECT 语句,且它不包含下列任何组件:

如果未指定缺省值,则在视图中未定义的底层表中的列收到缺省值或 NULL 值。如果这些列之一没有缺省值,且不允许 NULL 值,则 INSERT 失败。

您可使用数据完整性约束来防止用户将值插入到不符合视图定义 SELECT 语句的底层表内。要获取进一步的信息,请参阅 WITH CHECK OPTION 关键字

如果 INSTEAD OF 触发器在其 Action 子句中指定有效的 INSERT 操作,则您可通过 single-tablemultiple-table 视图插入行。要获得关于如何创建通过视图插入的 INSTEAD OF 触发器的信息,请参阅 视图上的 INSTEAD OF 触发器

如果几个用户正在将敏感信息输入到单个表内,则内建的 USER 函数可限制他们的视图每一用户仅插入指定的行。下列示例包含视图和实现此效果的 INSERT 语句:
CREATE VIEW salary_view AS
   SELECT lname, fname, current_salary FROM salary WHERE entered_by = USER;
 
INSERT INTO salary VALUES ('Smith', 'Pat', 75000, USER);