触发器是什么?做什么用的?怎么用?

触发器是什么?做什么用的?怎么用?

---------------------------------------------------------------------

1,触发器是附在表上,或视图上的一种特殊的存储过程,当表或视图发生,数据更新,增加数据,删除数据时自动执行的一个过程

2,触发器不用调用,它自动执行,它仅执行在SQL服务器上,不执行在DELPHI的应用程序中

-----------------------------------------------------------------------

如何创建触发器?

-------------------------------------------------------------------------

Create Trigger 触发器名 On 表名 For [Insert,Update,Delete] //使用中不要[]号,里面的内容可以选1个,也可以选3个中间用(,)隔开

语句

 

-----------特定的列不许更改----------------------- 

如果更新酒水名称列,将回滚事务
-------------------------------------
CREATE Trigger TheDelete On 菜单 For Delete,Update,Insert  As
  
  if Update(酒水名称) RollBack Transaction

-------------------------------------

 

----------------------特定行中的特中值不可更改-----------------------
 Declare @TheID Char(10)
Select @TheID = 酒水编号 From Deleted
if @TheID = '1805'  begin
   RollBack Transaction     
end
-----------------------------------------------------------------

其实这二个事务可以写在一起,代码如下
-------------------------------------------------
CREATE Trigger TheDelete On 菜单 For Delete,Update,Insert  As
  
  if Update(酒水名称) RollBack Transaction
 Declare @TheID Char(10)
Select @TheID = 酒水编号 From Deleted
if @TheID = '1805'  begin
   RollBack Transaction     
end

-----------------------------------------------------
触发器的另一种应用就是当更改某列的值时,触发另一个表的计算工作,或本表的计算工作.

如:当销售数量更变时,自动减少库,并计算库存金额可以用下面的变通方法

触发器代码如下
-------------------------
CREATE Trigger TheDelete On 菜单 For Delete,Update,Insert  As
 if Update(单价)  begin
   Update 菜单 Set 单价 = 单价*2 Where 单价=(Select 单价 From Inserted)
end
--------------------------

----------------------------------------------------------------------

对上表的代码做个说明
---------------------------------

事实上,SQL-Server2000会为每个触发器创建2个专用表①Deleted表②Inserted表,他们存放在内存中,它们保存着变更记录的原始数据信息(所有字须都保存),这二个表的结构总是与触发器作用的表结构相同,当触发器用完成时,与这个触发器相关的内存表Deleted表与Inserted就会自动删除,

①Deleted表:如果是Insert触发器,当Delete操作发生时,表中存放着要删除的数据行,如果是Update触发器,当进行Update操作时,表中存放着更新前的记录行

②Inserted表:如果是Insert触发器,当Insert操作发生时,表中放着待Insert的新数据行,如果是Update触发器,当进行Update操作时,表中存放着更新后的记录行 

注意,没有Updated这个内存表!

------------------------------------------

DoubleCat

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值