Trigger For MSSQL

1.语法:

Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
CREATE TRIGGER [ schema_name . ]trigger_name 
ON { table | view } 
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF } 
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } 
[ NOT FOR REPLICATION ] 
AS { sql_statement  [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }

<dml_trigger_option> ::=
    [ ENCRYPTION ]
    [ EXECUTE AS Clause ]

<method_specifier> ::=
    assembly_name.class_name.method_name


2.举个例子:XXX人打卡,如果八点半后打卡就算迟到,所以建立个触发器,打卡后(for【默认After,可以不写】)判断打卡时间,如果大于八点半则插入后把这条记录的打卡时间改成八点半,可以定义到八点半到九点半之内打卡都不算迟到、大家看例子后都不要学着例子做哦、谢谢支持了

if object_id('NLate') is not null 
    drop trigger NLate
go
create trigger NLate on CHECKINOUT --[on 表名]
    for insert  
as
    declare @LateTime datetime      --打卡时间[已迟到]
    declare @NLateTime datetime     --不迟到时间1
    declare @NLeaveTime datetime    --不迟到时间2 
    select  @LateTime = CHECKTIME ,
            @NLateTime = cast(( left(CHECKTIME, 10) + ' 08:30'
                                + right(convert(char(25), getdate(), 121), 9) ) as datetime),
            @NLeaveTime = cast(( left(CHECKTIME, 10) + ' 09:30'
                                + right(convert(char(25), getdate(), 121), 9) ) as datetime)
    from    inserted  where   USERID in ( select  userid
                                          from    UserInfo
                                          where   BadgeNumber in ( '006514' ) )
    if (@LateTime > @NLateTime and @LateTime<@NLeaveTime)
        begin 
            update  dbo.CHECKINOUT
            set     CHECKTIME = @NLateTime
            where   CHECKTIME = @LateTime
                    and USERID in ( select  userid
                                    from    UserInfo
                                    where   BadgeNumber in ( '006514' ) )
        end


 推荐博客:AnCode++ (VS2017/19 插件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值