我有一个视图,其中包含realField1,RealField2,Realfield3和许多其他Realfields以及一个名为isHighestVersion
的计算列。
(realField 表示 SQL Server 表中的实际列,为简洁起见,列名已重命名(。
该视图基于多表查询(实际上必须多次引用同一个基表,但 SQL Server 将它们视为多个不同的表(,并且具有一个名为isHighestVersion
的计算布尔列。此视图不允许直接更新,并在尝试更新时显示以下错误消息:
更新或插入视图或函数"xyz"失败,因为它包含派生字段或常量字段。
由于我将拥有许多这样的视图,并且基础表和视图的字段可能会在开发期间发生变化,因此我希望在触发器中有一个"通用"SQL代码,该代码将所有列(isHighestVersion
列除外(从"插入"表中拉出,然后在一个真正的底层表中对正确的记录进行更新 - 当然没有不存在的ishighestversion
列。
怎么做?
这很简单...你不能。这里没有工作。它违反了可更新视图的限制。文档中明确指出了这一点。
计算。无法从以下表达式计算列: 使用其他列。