SQLSERVER中的非工作时间不得插入数据的触发器的实现

本文介绍了一个SQL触发器的实现方案,该触发器能够根据当前日期和时间判断是否为工作时间,并在非工作时间阻止对指定表进行插入、更新或删除操作。触发器考虑了普通年份及闰年的特殊日期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

create trigger trigger_name
on table_name
for insert,update,delete
as
if (datepart(yy,getdate())%4=0 or datepart(yy,getdate())%100=0)
begin
 if (datepart(hh,getdate()) between '0' and '8')
 or (datepart(hh,getdate()) between '12' and '14')
 or (datepart(hh,getdate()) between '18' and '24')
 or (datepart(dw,getdate()) = '7')
 or (datepart(dw,getdate()) = '1')
 or (datepart(dy,getdate()) between '122' and '128')
 or (datepart(dy,getdate()) between '275' and '281')
 begin
  print'非上班时间,不能插入或修改数据'
  rollback transaction
 end
end
else if(datepart(yy,getdate())%4!=0 or datepart(yy,getdate())%100!=0)
begin
 if (datepart(hh,getdate()) between '0' and '8')
 or (datepart(hh,getdate()) between '12' and '14')
 or (datepart(hh,getdate()) between '18' and '24')
 or (datepart(dw,getdate()) = '7')
 or (datepart(dw,getdate()) = '1')
 or (datepart(dy,getdate()) between '121' and '127')
 or (datepart(dy,getdate()) between '274' and '280')
 begin
  print'非上班时间,不能插入或修改数据'
  rollback transaction
 end
end
drop trigger trigger_name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值