如何创建使用INSERT,DELETE,UPDATE事件的触发器

Ayk*_*lik 4 sql t-sql sql-server triggers

我想创建一个用于logging的触发器.所以我需要INSERT,UPDATE或DELETE.ie的事件名称:其中一个语句用于查询执行,我的触发器将触发并开始记录.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER LogBuses 
 ON  Bus_table 
 AFTER INSERT,DELETE
 AS 
BEGIN
DECLARE @PlateNo nvarchar(50)
IF INSERT//something like that-INSERTING- DELETING
    SELECT @PlateNo=PlateNo from inserted
insert into Logger (EffectedTable,ActionName,EffectDate,EffectedID) 
VALUES ('Bus_table','Insert',SYSDATETIME (),@PlateNo);
ELSE IF DELETE 
    SELECT @PlateNo=PlateNo from deleted
insert into Logger (EffectedTable,ActionName,EffectDate,EffectedID) VALUES ('Bus_table','Insert',SYSDATETIME (),@PlateNo);
Run Code Online (Sandbox Code Playgroud)

结束了

Eri*_*ric 9

您使用inserteddeleted表.如果仅inserted填充表,则插入它,如果仅填充表则删除,如果deleted填充了两个表则更新.使用if exists (select 1 from inserted)测试.

if exists (select 1 from inserted) and exists (select 1 from deleted)
--update
else if exists (select 1 from inserted)
--insert
else if exists (select 1 from deleted)
--delete
Run Code Online (Sandbox Code Playgroud)