温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SQL Server 创建触发器

发布时间:2020-07-20 03:06:57 来源:网络 阅读:459 作者:乌英达姆 栏目:数据库
-- TABLE INSERTVAL UPDATEVAL
if (object_id('DATA_SYNC_FH_DJ','TR') is not null)
    drop trigger DATA_SYNC_FH_DJ
go
create trigger DATA_SYNC_FH_DJ
on FH_DJ
    for insert,update,delete
as
    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)
BEGIN
SET @isInsert = 1;
select @Djid = djid from inserted;
END
ELSE
SET @isInsert = 0
-- 判断是否为更新操作
IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
SET @isUpdate = 1;
select @Djid = djid from inserted;
END
ELSE
SET @isUpdate = 0
-- 判断是否为删除操作
IF (NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted))
BEGIN
SET @isDelete = 1;
select @DJdanhao = DJdanhao from deleted;
END
ELSE
SET @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);
        end
go
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI