如果新记录与旧记录不同,如何创建仅更新记录的触发器?

时间:2012-11-10 20:14:01

标签: sql-server-2008 tsql triggers

问题是创建一个触发器,只有旧记录与新记录不同时才会更新记录。我可以得到一些帮助吗,我甚至不知道除了

之外如何启动语法
CREATE TRIGGER update_marketingliste
ON marketing_list FOR UPDATE
AS
BEGIN

    SELECT * FROM INSERTED
END

1 个答案:

答案 0 :(得分:0)

我不确定架构是什么,但下面的示例代码应该可以帮助您了解如何做到这一点。

设置NOCOUNT ON GO

CREATE TABLE test(col1 int primary key,col2 int) 去

在测试时创建TRIGGER trg_test_upd 不断更新 如 开始

            IF  EXISTS (
                                SELECT * 
                                FROM Deleted  del -- old value
                                INNER JOIN Inserted ins  -- new value
                                on del.col1 = ins.col1 
                                and del.col2 = ins.col2)
            BEGIN 

                PRINT 'No Update'
                RETURN  --if old value is same as new value dont update
            END 
            ELSE 
            BEGIN 
                            UPDATE t1
                            set col2  = i.col2
                            from dbo.test t1 
                            inner join inserted i 
                            on t1.col1 = i.col1 

            END 

END 去

插入测试(col1,col2) 选择10,10 去

更新测试 设置col2 = 200 其中col1 = 10

SELECT * 从测试

- 这不会做更新 更新测试 设置col2 = 200

GO

丢弃表测试 去