【问题标题】:Update a view concatenated column in SQL Server更新 SQL Server 中的视图连接列
【发布时间】:2014-12-15 05:04:27
【问题描述】:

我有一个名为 Employee 的表,其中包含以下列:

EmpID, EmpName, HRA, Basics, Allowances

我创建了一个视图:

CREATE VIEW vw_Emp 
AS 
   SELECT 
       EmpName AS 'Employee', 
       (HRA + Basics + Allowance) AS 'Salary' 
   FROM Employee

我想更新薪水,以便将其存储到相应的列HRABasicsAllowance。有没有可能做到这一点?

【问题讨论】:

  • 您想使用视图更新它吗?
  • 其实这个问题是在面试的时候问我的。

标签: sql-server view sql-server-2008-r2 sql-update


【解决方案1】:

您不能仅使用视图更新HRABasicsAllowances 列,因为它是一个计算列。考虑到服务器无法知道如何在 3 列之间分配您为 Salary 提供的金额,很明显为什么会这样。

【讨论】:

  • 是的。但是面试官告诉我有一个选项可以做到这一点。我想知道这样做的方法是什么?
  • @thevan 如果您直接引用了这些列,这些列将是可更新的,但您无法更新从计算中派生的列。请参阅msdn.microsoft.com/en-us/library/ms187956.aspx 上关于可更新视图的讨论。可能是面试官错了,或者你理解错了。
【解决方案2】:

无法直接使用视图更新计算列。 您可以在视图上使用而不是触发来处理这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2016-03-01
    相关资源
    最近更新 更多