【发布时间】:2019-04-23 16:20:19
【问题描述】:
我正在尝试为从现有视图 (Y) 中提取数据的新表 (X) 创建触发器。 (表 Y 是视图 X 的副本)
我知道创建触发器以将数据从视图中提取到它自己的基表中。
到目前为止,我使用 insert into 语句将数据从 Y 插入到 X。我需要在 Y 上设置一个触发器,这样 Y 上的更新/插入也会反映在 X 上。
这就是我想要做的:
在 X 上创建触发器 TableUpdate
而不是插入,更新 作为
开始
插入Y
从插入中选择 *
结束
这看起来只更新其基表而不是外部表。
【问题讨论】:
-
这个问题太模糊了。你是什么意思它只更新基表而不是外部表?您的而不是触发器会将数据插入 X 并且不会向 Y 插入任何内容(这看起来有点傻)。我认为您在这里真正想要的是查看复制而不是使用触发器来执行此操作。
-
“最好”的方法就是不复制数据 - 期间。这闻起来像XY problem。你想在这里完成什么?您是否正在尝试拍摄某种快照,以便随着时间的推移进行比较?
-
由于视图需要一段时间来执行,我试图将这些数据拉到一个表中以便更快地执行。
-
你为什么不能写你所拥有的触发器的反面?在插入到 X 的 Y 上放置一个触发器。目前还不清楚您实际上在问什么,因为您似乎已经知道如何做您想做的事情。 “基表”和“外部表”对您来说意味着什么?
-
现在很明显 真正的 问题是视图很慢,您应该专注于修复视图,以免它变慢。为什么你的视图很慢?
标签: sql-server triggers sql-server-2017