如何检测是否为插入或更新触发了触发器



我需要在数据库中创建一个表,该表包含给定表中出现的所有DML语句的所有历史记录。LOG表格如下:

记录记录1记录2
id 事件 ts
1 更新 2020-01-01
2 删除 2020-01-02

要检测事件类型,可以使用INSERTINGUPDATING(或DELETING(上下文变量。

顺便说一句,不要在TableA的触发器中使用SELECT record FROM TableA,而是使用NEW上下文(或OLD用于删除(。

解决方案看起来像这样:

insert into LOG (event, record) 
values (case when :inserting then 'insert' when :updating then 'update' end, new.record);

最新更新