2013-03-08 53 views
0

我想在MS SQL中为INSERT,UPDATE和DELETE创建单个触发器,但我希望能够简单地提取数据3 IF语句什么是最好的方法来确定是否发生UPDATE,DELETE或INSERT触发器

我想要做这样的事情:

DECLARE @PK int 

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

这没有工作,但想知道如果我能在一个查询做到这一点。

有什么替代方案?

+0

而不是逗号加入,你试过SELECT @PK = COALESCE(i.PK,d.PK) FROM插入i完全外部连接删除d上i.PK = d.PK? – 2013-03-08 18:50:42

+0

全外连接工程..谢谢。那就是我下一次要尝试的:0) – Arcadian 2013-03-08 18:52:31

+0

提取数据到什么地方? – 2013-03-08 18:55:43

回答

0

我最终使用完全外部联接

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。

相关问题