问题是创建一个触发器,该触发器仅在旧记录与新记录不同时才更新记录。我可以得到一些帮助吗?我什至不知道如何开始语法除了
CREATE TRIGGER update_marketingliste
ON marketing_list FOR UPDATE
AS
BEGIN
SELECT * FROM INSERTED
END
问题是创建一个触发器,该触发器仅在旧记录与新记录不同时才更新记录。我可以得到一些帮助吗?我什至不知道如何开始语法除了
CREATE TRIGGER update_marketingliste
ON marketing_list FOR UPDATE
AS
BEGIN
SELECT * FROM INSERTED
END
我不确定架构是什么,但下面的示例代码应该可以帮助您了解如何做到这一点。
设置 NOCOUNT ON GO
创建表测试(col1 int 主键,col2 int)去
CREATE TRIGGER trg_test_upd on test INSTEAD OF UPDATE AS BEGIN
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
结束
插入测试 (col1, col2) select 10, 10 go
更新测试集 col2 = 200 其中 col1 = 10
从测试中选择 *
--这不会做更新更新测试集col2 = 200
去
掉落表测试