mysql updata 前面得到的值_sql如何取得触发器update前的值

展开全部

更新的动作你可以分2步理解,先delete ,再insert

所以,前的e69da5e6ba903231313335323631343130323136353331333365633837值在 deleted里

后的值在 inserted里

create trigger t_ATDATEState_update

on list

for update

as

if update(ATDATEState)

begin

declare @b_ATDATEState nvarchar(200)  --修改之前的

declare @S_ATDATEState nVARCHAR(200)  --修改之后的

declare @S_id INT

SELECT @S_ATDATEState= ATDATEState FROM INSERTED --从更新后的副本表(临时表)里面 获得要修改后的状态

select @S_id=id,@b_ATDATEState=ATDATEState from deleted  --从之前删掉的临时表里面获取原来的值

if @S_ATDATEState is null

begin

set @S_ATDATEState='0'

end

if @b_ATDATEState is null

begin

set @b_ATDATEState='0'

end

--如果修改前为2,3,4  降低了状态 向下修改  并且 修改后的状态和修改前不一样

if ((convert(int,@b_ATDATEState)>=2  and convert(int,@S_ATDATEState)@S_ATDATEState))

begin

insert into dbo.operate(c_id,before_ATDATEState,after_ATDATEState,o_ip,o_type)

values(@S_id,@b_ATDATEState,@S_ATDATEState,'','状态不正常,向下降低了')

end

if(convert(int,@b_ATDATEState)<2) and ( convert(int,@S_ATDATEState)>=2)

begin

insert into dbo.operate(c_id,before_ATDATEState,after_ATDATEState,o_ip,o_type)

values(@S_id,@b_ATDATEState,@S_ATDATEState,'','状态升高')

end

end

ee27dff7c4f55e874be3e0b4a77d3cda.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值