【发布时间】:2014-09-24 13:08:05
【问题描述】:
TSQL 中更新后触发器的基本语法是:
CREATE TRIGGER [dbo].[triggerName]
ON [dbo].[Table]
AFTER UPDATE, INSERT --trigger when Update or Insert in table
AS BEGIN
SET NOCOUNT ON;
IF UPDATE (ColumnA) -- if ColumnA updates start
begin
UPDATE Table
SET ColumnC = ColumnA + ColumnB -- recalculate Column C
end
IF UPDATE (ColumnB) -- if ColumnB updates start
begin
UPDATE Table
SET ColumnC = ColumnA + ColumnB -- recalculate Column C
end
END
我猜现在上面可以工作,但是是否可以将两个 IF UPDATES 合二为一?: 像这样的:
IF UPDATE (ColumnA) OR (ColumnB) -- if ColumnA or ColumnB updates start
begin
UPDATE Table
SET ColumnC = ColumnA + ColumnB -- recalculate Column C
end
您当然可以使用计算列,但出于好奇,我想知道您是否可以在触发器中一次检查多个列的更新,然后进行更新后触发器修改。
【问题讨论】:
-
另外,现在,您需要为表中的 所有 行重新计算
ColumnC,而不仅仅是那些受插入或更新操作影响的行。 ....
标签: sql sql-server tsql triggers sql-update