最简单的触发器的用法

来源:互联网 发布:剑灵捏脸数据17173 编辑:程序博客网 时间:2024/05/01 12:50

场景如下:

有以下表: 总金库。字段为:编号,金库。  日志表。字段为:编号,原值,现值,时间。设置编号为标识,时间默认值为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

  

 

 

 

原创粉丝点击