创建触发器以从现有视图更新新表

问题描述 投票:-1回答:1

我正在尝试为新表(X)创建一个触发器,该表从现有视图(Y)中提取数据。 (表Y是视图X的复制品)

我知道创建触发器以将数据从视图拉到其自己的基表。

截至目前,我使用insert into语句将数据从Y插入到X.我需要在Y上设置一个触发器,这样Y上的更新/插入也会反映在X上。

这就是我想要做的:

在X上创建触发器TableUpdate

而不是插入,更新为

开始

插入Y.

select * from inserted

结束

这看起来只更新其基表而不是外部表。

sql-server triggers sql-server-2017
1个回答
0
投票

当底层(基础)表数据发生更改时,您无法使用触发器检测视图中的数据更改。您需要向表格(例如表A)添加触发器,以形成此视图以捕获数据更改。

总结一下:

  • 假设View Y从表A中获取数据。
  • 假设View Y有INSTEAD OF触发器。
  • 当表A中的数据发生变化时,View Y中的触发器不会触发。它只会在您直接插入/更新View Y时触发。

结论

正如@SeanLange所说,您需要考虑优化视图和/或找到不使用它的方法。

我建议你看看Materialised Views作为优化View性能的可能方法。

© www.soinside.com 2019 - 2024. All rights reserved.