更新 SQL Server 中的视图连接列

Posted

技术标签:

【中文标题】更新 SQL Server 中的视图连接列【英文标题】:Update a view concatenated column in 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。有没有可能做到这一点?

【问题讨论】:

您想使用视图更新它吗? 其实这个问题是在面试的时候问我的。 【参考方案1】:

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

【讨论】:

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

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

【讨论】:

以上是关于更新 SQL Server 中的视图连接列的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQL Server 读取 MS Access 数据库以更新一个或多个表列中的数据?

SQL Server,将列中的所有值与另一个值的一些值连接起来

如何为每个表计算由 SQL Server 中未指定数量的表共享的列中的不同值?

在 SQL Server 的列中删除尾随空格和更新

如何将另一行中的值插入列中 - SQL Server

在 SQL Server 2000/2005 中更新表的工具