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)
如果涉及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)