这个触发器怎么实现?检测是否对记录进行了相同修改,有点难
现在根据表里面的字段 OpState来判定是否执行一段存储过程
修改OpState为1或者增加一条记录并且该OpState为1就执行存储过程
目前修改和插入的触发器我都基本实现了,是分开写的,但对于修改的触发器1个大Bug,那就是如果原来字段为1,现在还是写1,那就又执行一次存储过程,由于这个存储过程是大批量写数据,那么假如客户端不小心连续执行了更改字段的命令,那么就连续执行了触发器,或者多执行了一次,引起问题,代码如下,大家帮助看看
我现在里面是不允许OpState列同时有2个或以上的1
CREATE trigger Tr_Ra on Log_RefreshData_Table
for update
as
begin
declare @Year int
declare @Month int
declare @OpState int
declare @OpState2 int
declare @Num int
if Update(OpState)
Begin
select @Num = count(*) from Log_RefreshData_Table where OpState=1
if @Num=0
Begin
Insert into TestInfo(Msg,TryTime) Values( '没有可执行的任务...... OpState <> 1 ',Getdate())
return
End
select @OpState = OpState from Log_RefreshData_Table where ID = (select ID from Inserted)
select @OpState2 = OpState from Log_RefreshData_Table where ID = (select ID from Inserted)
select @Num = count(*) from Log_RefreshData_Table where OpState=1
/***********功能未实现,不明白为什么**************/
if @Num=1 and @OpState=@OpState2--上次进行的本月导入尚未结束,取消本次指令
Begin
--RollBack
Insert into TestInfo(Msg,TryTime) Values( '本月批量导入正在进行...... '+str(@OpState)+str(@OpState),Getdate())
return
End
/***************************************/
if @Num> 1
Begin
RollBack
Insert into TestInfo(Msg,TryTime) Values( '某次批量导入正在进行,请等待执行...... ',Getdate())
return
&n