我想在MS SQL中为INSERT,UPDATE和DELETE创建单个触发器,但我希望能够在没有3个IF语句的情况下简单地提取数据
我想做这样的事情:
DECLARE @PK int
SELECT @PK = COALESCE(i.PK, d.PK)
FROM inserted i, deleted d
这不起作用,但想知道我是否可以在一个查询中完成。
有哪些替代方案?
答案 0 :(得分:1)
答案 1 :(得分:0)
我最终使用FULL OUTER JOIN
DECLARE @DataIWanted as varchar(255)
SELECT @DataIWanted = COALESCE(i.TheData,d.TheData)
FROM inserted i
FULL OUTER JOIN deleted d on d.PK=i.PK
上面的查询将来自已删除的表或插入/更新的表。假设在数据库中将TheData定义为NON NULL。