【问题标题】:SQL Server Database - Allowing application to edit records in a view?SQL Server 数据库 - 允许应用程序在视图中编辑记录?
【发布时间】:2010-06-22 00:35:48
【问题描述】:

我为一组三个表制作了一个自定义视图。我将如何配置视图,以便应用程序可以像使用表格一样使用它来编辑它?我正在使用 SQL Server Studio Express。

【问题讨论】:

    标签: sql sql-server views updatable-views


    【解决方案1】:

    SQL Server 中的视图可以是updatable, but there are restrictions (CREATE VIEW, Updatable View section):

    • 任何修改(包括 UPDATE、INSERT 和 DELETE 语句)都必须仅引用一个基表中的列。
    • 视图中被修改的列必须直接引用表列中的基础数据。这些列不能以任何其他方式派生,例如通过以下方式:
      • 聚合函数:AVG、COUNT、SUM、MIN、MAX、GROUPING、STDEV、STDEVP、VAR 和 VARP。
      • 计算。无法从使用其他列的表达式计算该列。使用集合运算符 UNION、UNION ALL、CROSSJOIN、EXCEPT 和 INTERSECT 形成的列相当于计算,并且也不可更新。
    • 正在修改的列不受 GROUP BY、HAVING 或 DISTINCT 子句的影响。
    • TOP 不与 WITH CHECK OPTION 子句一起在视图的 select_statement 中的任何地方使用。

    否则,您将不得不使用INSTEAD OF triggers

    【讨论】:

      【解决方案2】:

      您需要在视图上创建 INSTEAD OF INSERT 和 INSTEAD OF UPDATE 触发器,然后在触发器中编写插入和更新语句来操作 3 个基础表中的数据。请参阅this MSDN article,它有一个简单的示例。您将在触发器定义的上下文中的特殊 INSERTED 表中找到所需的编辑值。

      【讨论】:

        猜你喜欢
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        • 2020-06-15
        • 1970-01-01
        相关资源
        最近更新 更多