可以在一个查询中使用select语句更新列

时间:2017-08-06 19:35:05

标签: sql-server

例如,现在我有三个查询。一个表的insert和select语句:

INSERT INTO Table_A (col_1)
VALUES (val_1)

SELECT SUM(col_1)
FROM Table_A
WHERE Table_A_ID = id

每次插入后,我需要重新计算总和并更新Table_B的列。

该总和存储在变量'sum'中,(我正在使用dapper),然后传递给另一个函数以及更新Table_B列的'id'变量。

UPDATE Table_B
SET col_1 = @sum
WHERE Table_B_ID = @id

我想结合最后两个查询来有效地实现以下目标:

UPDATE Table_B
SET col_1 = (SELECT Sum(col_1) FROM Table_A WHERE Table_A_ID = id)
WHERE Table_B_ID = id

这可能吗?

2 个答案:

答案 0 :(得分:1)

是否真的有必要存储计算列?

如果是,您可以考虑在表A上创建一个触发器,每次在“A”中插入记录时执行该触发器。然后触发器可以用计算的总和更新table_B。

(请记住,当删除或更新表A中的记录时,您必须修改表B中的计算总和。因此触发器应该是AFTER INSERT,UPDATE,DELETE触发器。)

答案 1 :(得分:1)

这是你在找什么?

setTimeout(function() { anotherFunction(); }, 3);