更新 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
我想更新薪水,以便将其存储到相应的列HRA
、Basics
和Allowance
。有没有可能做到这一点?
【问题讨论】:
您想使用视图更新它吗? 其实这个问题是在面试的时候问我的。 【参考方案1】:您不能仅使用视图更新HRA
、Basics
和Allowances
列,因为它是一个计算列。考虑到服务器无法知道如何在 3 列之间分配您为 Salary
提供的金额,很明显为什么会这样。
【讨论】:
是的。但是面试官告诉我有一个选项可以做到这一点。我想知道这样做的方法是什么? @thevan 如果您直接引用了这些列,这些列将是可更新的,但您无法更新从计算中派生的列。请参阅msdn.microsoft.com/en-us/library/ms187956.aspx 上关于可更新视图的讨论。可能是面试官错了,或者你理解错了。【参考方案2】:无法直接使用视图更新计算列。 您可以在视图上使用而不是触发来处理这种情况。
【讨论】:
以上是关于更新 SQL Server 中的视图连接列的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL Server 读取 MS Access 数据库以更新一个或多个表列中的数据?
SQL Server,将列中的所有值与另一个值的一些值连接起来