咨询电话:010-52882318
您的位置: 首页 > 产品展示 > 触发器

触发器

爱游戏ayx体育:SQL触发器实例讲解

来源:爱游戏ayx体育    发布时间:2026-08-21 00:13:11

产品详情

爱游戏ayx体育登录:

  此网站专门收集网上特价商品,信誉好的商品分享给大家,希望我们大家能够选到自己称心如意的商品

  备注:本人建了一个站特价汇,我想记录每个商品的点击量,然后按照点击量来牌名商品,想要提高效率,所以必须得用触发器,下面是本人在中的找到的学习资料,分享下给大家。

  定义:何为触发器?在SQLServer里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。

  1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);

  理解触发器里面的两个临时的表:Deleted,Inserted。注意Deleted与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。

  一个Update的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。

  从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。

  请大家注意跟踪这两个表的数据,体会触发器到底执行了什么业务逻辑,对数据有什么影响。

  为了能更清晰的表述触发器的作用,表结构存在数据冗余,且不符合第三范式,这里特此说明。

  触发器功能:强制执行业务规则,保证插入的数据中,库存金额=库存数量*库存单价。

  注意:[INSERTED]、[DELETED]为系统表,不可创建、修改、删除,但可以调用。

  第三条数据(云南映像)中,[库存金额]不等于[库存数量]乘以[库存单价],不符合业务规则。

  请注意在插入数据后,检查[卷烟库存表]中的数据是否库存金额=库存数量*库存单价。

  INSERTINTO卷烟库存表(卷烟品牌,库存数量,库存单价,库存金额)

  RAISERROR(’错误!该卷烟库存小于等于0,不能销售。’,16,1)

  INSERTINTO卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额)

  --针对[卷烟销售表],插入第二条测试数据,该数据销售金额不等于销售单价*销售数量。

  INSERTINTO卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额)

  --针对[卷烟销售表],插入第三条测试数据,该数据中的卷烟品牌在卷烟库存表中找不到对应。

  INSERTINTO卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额)

  服务器:消息50000,级别16,状态1,过程T_INSERT_卷烟销售表,行15

  --针对[卷烟销售表],插入第三条测试数据,该数据中的卷烟品牌在卷烟库存表中库存为0。

  INSERTINTO卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额)

  服务器:消息50000,级别16,状态1,过程T_INSERT_卷烟销售表,行29

  1、本示例主要通过一个简单的业务规则实现来进行触发器使用的说明,具体的要根据需要灵活处理;

  2、关于触发器要理解并运用好INSERTED,DELETED两个系统表;

  2ontable/view:触发器所作用的表。一个触发器只能作用于一个表

  5insert、update、delete:激活触发器的三种操作,可以同时执行,也可选其一

  6ifupdate(col_name):表明所作的操作对指定列是否有影响,有影响,则激活触发器。此外,因为delete操作只对行有影响,

  所以如果使用delete操作就不能用这条语句了(虽然使用也不出错,但是不能激活触发器,没意义)。

  deleted和inserted可以说是一种特殊的临时表,是在进行激活触发器时由系统自动生成的,其结构与触发器作用的表结构是一

  注意:update操作相当于先进行delete再进行insert,所以在进行update操作时,修改前的数据拷贝一条到deleted表中,修改后

  的数据在存到触发器作用的表的同时,也同时生成一条拷贝到insered表中

  特价汇此网站专门收集网上特价商品,信誉好的商品分享给大家,希望大家能选到自己称心如意的商品

相关推荐