0

我想在 MS SQL 中为 INSERT、UPDATE 和 DELETE 创建一个触发器,但我希望能够在没有 3 个 IF 语句的情况下简单地提取数据

我想做这样的事情:

DECLARE @PK  int

SELECT @PK = COALESCE(i.PK, d.PK)
FROM inserted i, deleted d

这不起作用,但想知道我是否可以在一个查询中做到这一点。

有哪些替代方案?

4

2 回答 2

1

您可以执行此处找到的切换逻辑:SQL Server 触发器切换插入、删除、更新

或者您可以创建 3 个不同的触发器。

这些是你的选择。

于 2013-03-08T18:51:21.130 回答
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。

于 2013-03-11T05:22:38.407 回答