sql-server – 在表上插入,删除和更新的SQL Server触发器
发布时间:2021-03-19 14:31:06 所属栏目:MsSql教程 来源:网络整理
导读:我有一个表Product和另一个表ProductLog. 日志表需要跟踪Product表中的两列.每次在这些列上插入,更新或删除时,我都需要更新日志表. 我是否需要编写三个单独的触发器,或者一个触发器可以处理这些操作? 我还需要知道操作的类型,例如,我需要知道日志表中的条目
|
我有一个表Product和另一个表ProductLog. 日志表需要跟踪Product表中的两列.每次在这些列上插入,更新或删除时,我都需要更新日志表. 我是否需要编写三个单独的触发器,或者一个触发器可以处理这些操作? 我还需要知道操作的类型,例如,我需要知道日志表中的条目是否是因为插入或删除或更新.如果有人给我一个很好的例子. 解决方法你只需要一个触发器CREATE TRIGGER [ProductAfter] ON [Product] AFTER INSERT,UPDATE,DELETE 您可以根据触发器主体中可用的已插入和已删除表中的记录数来确定触发触发器的DML语句.对于INSERT,删除为空,对于DELETE,inserted为空,对于UPDATE,插入和删除都不为空.例如, IF @@ROWCOUNT = 0 -- exit trigger when zero records affected
BEGIN
RETURN;
END;
DECLARE @type CHAR(1);-- 'U' for update,'D' for delete,'I' for insert
IF EXISTS(SELECT * FROM inserted)
BEGIN
IF EXISTS(SELECT * FROM deleted)
BEGIN
SET @type ='U';
END
ELSE
BEGIN
SET @type ='I';
END
END
ELSE
BEGIN
SET @type = 'D';
END;
另外,看看Tracking Data Changes,还有另一个跟踪没有触发器的更改的选项. (编辑:百科站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 为其他数据库中的内部存储过程设置中央CLR存
- sql-server-2005 – 在SQL Server 2005中使用PDF文件进行全
- master数据库损坏怎么办?有什么解决方法?
- SQL server中怎样做锁表和解锁表的操作?
- 如何检查表是否存在以及它是否不存在在sql server 2008中创
- 数据库 – Oracle Entreprise和Oracle Standard版本之间是否
- sql-server – 什么是评估合理缓冲池大小的确定性方法?
- GROUP BY中的SQL ORDER BY总计
- sql-server – 如何在SQL Server 2017中使用SNAPSHOT_MATER
- sql server 2012 FileTable有什么些功能?
站长推荐
热点阅读

