千家信息网

SQL Server 创建触发器

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,-- TABLE INSERTVAL UPDATEVALif (object_id('DATA_SYNC_FH_DJ','TR') is not null) drop trigger DATA_
千家信息网最后更新 2024年09月21日SQL Server 创建触发器
-- TABLE INSERTVAL UPDATEVALif (object_id('DATA_SYNC_FH_DJ','TR') is not null)    drop trigger DATA_SYNC_FH_DJgocreate trigger DATA_SYNC_FH_DJon FH_DJ    for insert,update,deleteas    declare     @oldUpdate varchar(20),    @newDate varchar(20),    @DJdanhao varchar(20),    @Djid int,    @isInsert bit,    @isUpdate bit,    @isDelete bit;        -- 判断是否为插入操作    IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)BEGINSET @isInsert = 1;select @Djid = djid from inserted;ENDELSESET @isInsert = 0-- 判断是否为更新操作IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)BEGINSET @isUpdate = 1;select @Djid = djid from inserted;ENDELSESET @isUpdate = 0-- 判断是否为删除操作IF (NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted))BEGINSET @isDelete = 1;select @DJdanhao = DJdanhao from deleted;ENDELSESET @isDelete = 0        --更新前的数据    select @oldUpdate = F_SYNC_UPDATE from deleted;    --通过应用程序修改时,F_SYNC_UPDATE=null或F_SYNC_UPDATE=0,此时不需要更新F_SYNC_DATE 时间戳,也不需要记录删除记录        if ((@oldUpdate is null) or (@oldUpdate = 0))        begin            --更新操作,更新时间戳F_SYNC_DATE=systimestamp和F_SYNC_UPDATE=null            if (@isUpdate = 1)insert into DATA_SYNC_B_OPERATOR (t_name, o_type, o_date, VKEYS)values ('FH_DJ', 2, GETDATE(), @Djid);--把新增加的记录插入到操作记录表if (@isInsert = 1)  insert into DATA_SYNC_B_OPERATOR (t_name, o_type, o_date, VKEYS)  values ('FH_DJ', 1, GETDATE(), @Djid);--把删除记录的主键添加到操作记录表if (@isDelete = 1)  insert into DATA_SYNC_B_OPERATOR (t_name, o_type, o_date, VKEYS)  values ('FH_DJ', 3, GETDATE(), 'test@' + @DJdanhao);        endgo
0