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

时间:2019-04-23 16:20:20

标签: sql-server triggers sql-server-2017

我正在尝试为新表(X)创建触发器,以从现有视图(Y)中提取数据。 (表Y是视图X的副本)

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

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

这就是我想要做的:

在X上创建触发器TableUpdate

代替插入,更新   

开始

插入Y

从插入的内容中选择*

结束

看起来它仅更新其基表,而不更新外部表。

1 个答案:

答案 0 :(得分:0)

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

总结一下:

  • 假设视图Y从表A中获取数据。
  • 假设视图Y具有INSTEAD OF触发器。
  • 在表A中更改数据时,视图Y中的触发器将触发。仅当您直接插入/更新视图Y时才会触发。

结论

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

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