最简单的触发器的用法

场景如下:

有以下表: 总金库。字段为:编号,金库。  日志表。字段为:编号,原值,现值,时间。设置编号为标识,时间默认值为getdate()。这2个字段就不需要动了。

目的:

1、不管是在程序中 还是手动修改金库这个数值 必须记录到日志表中。

2、 金库中记录只能保持一条,不能删除,不能新增,只能修改。

3、日志表中记录只能新增,不能删除,不能修改。

 

下面来实现

1、记录到日志表

create trigger 触发器名称 on 表名 for update                                                     --for跟操作类型,这个触发器是针对什么操作的
as
begin
  declare @oldvalue float;                                                                                       --变量原值
  declare @newvalue float;                                                                                     --变量现值
  select @oldvalue=金库 from deleted                                                                --读原值
  select @newvalue=金库 from inserted                                                            --读现值

insert into 总金库_记录 (原值,现值) values (@oldvalue,@newvalue)           --插入
end

 

这里面有几个关键点.(1) declare 是声明变量的意思 后面跟变量名和类型 (2) deleted inserted这2个表是MSSQL自动建的临时表 用于记录这个表在触发时的数据,deleted里面记的是原来的数据,inserted记录的是现在改动后的数据.

 

2、金库中记录只能保持一条,不能删除,不能新增,只能修改

create trigger 触发器名称 on 表名 for insert,delete
as
begin
rollback                                                 --回滚
end

  

3、日志表中记录只能新增,不能删除,不能修改。

create trigger 触发器名称 on 表名 for update,delete
as
begin
rollback                                                 --回滚
end

  

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值