【问题标题】:Simple Database Views (update, insert, delete)简单的数据库视图(更新、插入、删除)
【发布时间】:2014-01-25 08:53:59
【问题描述】:

在我的大学笔记中,我目前正在尝试研究视图,但材料中没有显示何时可以更新、插入或删除简单视图的标准。我认为特权可能与此有很大关系,并且似乎常识不允许视图中的数据被创建视图的人以外的任何人删除,但这与常识无关,只是可以更新,插入或删除视图,其标准是什么。

在我的示例中,我创建了一个名为 EmployeeNames 的视图,它在一个新字段 Names 下采用 first_namelast_name,就像这样

CREATE VIEW EmployeeName as  
SELECT first_name + last_name "Names"
FROM Employees; 

(也不完全确定这种语法,但我认为它是正确的)

有权访问此视图的任何人都可以更新、插入或删除此字段吗?(无特权)

【问题讨论】:

  • 不同数据库系统的规则可能不同。
  • 就我个人而言,我永远不会通过视图来做到这一点。请改用计算列。
  • 关于这个主题有一整本书,作者:CJ 日期:shop.oreilly.com/product/0636920028437.do

标签: sql views corresponding-records


【解决方案1】:

必须满足某些条件,才能更新视图。 例如,如果您有一个聚合函数在视图中,您显然无法更新它。

有关 Oracle 的更多信息,您可以找到 here

For MySQL 和 oracle 很像

【讨论】:

  • 这更多是对不实用的视图的理论看法,但我们使用 oracle,因此对于我的示例,假设我可以在此视图上完成所有三个操作,但说我有另一个与 AVG 运算符一起使用,这行不通?
  • 对,它是不可更新的视图。
  • 非常感谢。奇怪的是,这方面的信息不多,但那个链接很棒
【解决方案2】:

在 SQL Server 中有更新视图的特定规则,它们非常复杂。每个数据库都会以不同的方式执行此操作。由于这些规则,我多年来看到的大多数视图可能都无法更新。

就个人而言,我更喜欢直接更新表格,而不是通过视图。如果您可能有不同的数据库后端,我肯定会考虑直接更新表,因为每个数据库的规则都非常不同。

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多