我有一个触发器,将从表A删除/更新的记录插入表B。这是通过使用sql server中的已删除对象来实现的。 我的问题是。有没有一种方法可以确定在表A中执行的操作是使用SQL Server中的已删除对象进行的更新还是删除
答案 0 :(得分:0)
这是一个例子...
drop table if exists dbo.temp;
drop table if exists dbo.log;
go
create table dbo.temp(Id int, Value varchar(100));
insert dbo.temp values (1, '1'), (2, '2'), (3, '3');
go
create table dbo.log(Id int, Operation char(1));
go
create trigger trigger_temp
on dbo.temp
for update, delete
as begin
insert dbo.Log
select i.Id , 'U'
from inserted i
inner join deleted d
on d.Id = i.Id;
insert dbo.Log
select d.Id, 'D'
from deleted d
left outer join inserted i
on i.Id = d.Id
where i.Id is null
end;
go
insert dbo.temp values (4, '4');
update dbo.temp set Value = '-1' where Id = 1;
delete dbo.temp where id = 2;
select * from dbo.Log
go