【发布时间】:2022-11-02 01:37:12
【问题描述】:
我有两个表:“SingleTable”和“SummaryTable” 然后有一个函数可以汇总 SingleTable 中的一些条目并将其写入 SummaryTable。
每次插入 SummaryTable 条目时,也会有 Summary Key 作为属性(不是 pk,不是唯一的)。 现在我想在每个汇总的 SingleTable 条目中写入创建的汇总键。
创建 SummaryTable 条目(例如):
INSERT INTO SummaryTable
(some column names)
SELECT DISTINCT
(some column names)
FROM SingleTable
WHERE
(some criteria)
我写了这样的东西来获取最新创建的摘要键:
UPDATE SingleTable
SET summarykey =
(SELECT summarykey
FROM SummaryTable
WHERE id = @@IDENTITY
)
WHERE
(some criteria)
但据我了解,每次创建摘要时我都必须运行它,而不是在 INSERT INTO 语句完成后运行它。
知道怎么做吗?
【问题讨论】:
-
听起来像是非常适合 DML 触发器的任务...?
-
我支持这个触发器的概念。但要小心使用
@@identity。您应该改用SCOPE_IDENTITY。无论您做什么,都要确保您的触发器是基于不使用标量变量设置的。 -
身份不相关,您将加入
inserted表 -
为什么有一个汇总表,而不是一个汇总
VIEW?那你不需要每次到UPDATE另一张桌子。
标签: sql sql-server rapidsql