SQL Server:不是在视图时触发更新;选择除特定列之外的所有列并更新基表记录



我有一个视图,其中包含realField1,RealField2,Realfield3和许多其他Realfields以及一个名为isHighestVersion的计算列。

(realField 表示 SQL Server 表中的实际列,为简洁起见,列名已重命名(。

该视图基于多表查询(实际上必须多次引用同一个基表,但 SQL Server 将它们视为多个不同的表(,并且具有一个名为isHighestVersion的计算布尔列。此视图不允许直接更新,并在尝试更新时显示以下错误消息:

更新或插入视图或函数"xyz"失败,因为它包含派生字段或常量字段。

由于我将拥有许多这样的视图,并且基础表和视图的字段可能会在开发期间发生变化,因此我希望在触发器中有一个"通用"SQL代码,该代码将所有列(isHighestVersion列除外(从"插入"表中拉出,然后在一个真正的底层表中对正确的记录进行更新 - 当然没有不存在的ishighestversion列。

怎么做?

这很简单...你不能。这里没有工作。它违反了可更新视图的限制。文档中明确指出了这一点。

计算。无法从以下表达式计算列: 使用其他列。

最新更新