如何使用更新触发器更新另一个表?

Spa*_*fa9 24 sql triggers sql-server-2008 sql-update

我是触发器的新手,想要在更新列时创建触发器并使用该值更新另一个表.

我有一个带有年份列的table1,如果应用程序更新该年份列,我需要在同一年更新表2.

ALTER TRIGGER [dbo].[trig_UpdateAnnualYear]
   ON  [dbo].[table1]
   AFTER UPDATE
AS 

if (UPDATE (intAnnualYear))   
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for trigger here

    Update table2 set AnnualYear = intAnnualYear where table2.ID = table1.ID
END
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 27

你没有引用table1触发器内部.使用inserted伪表获取"after"值.还要记住,更新可能会影响多行.

所以用.替换你当前的update陈述

UPDATE table2
SET    table2.annualyear = inserted.intannualyear
FROM   table2
       JOIN inserted
         ON table2.id = inserted.id  
Run Code Online (Sandbox Code Playgroud)


Ric*_*iwi 9

如果涉及intannualyear列,则只需更新table2中的记录.此外,这是Martin展示的两个表中的替代UPDATE语法

IF UPDATE(intannualyear)
    UPDATE table2
    SET    annualyear = inserted.intannualyear
    FROM   inserted
    WHERE table2.id = inserted.id
Run Code Online (Sandbox Code Playgroud)