数据库回顾之-----触发器

重新回顾牛腩视频的时候,感觉自己对操作数据库,依然有些小问题,不能很顺利的创建触发器,对触发器的了解不是很多,然后自己就开始,复习一下触发器。

触发器(trigger)是一个特殊的存储过程,它的执行不是程序调用,也不是手动启动,而是由事件来触发,比如对一个表进行(insert,delete,update)时就会激活执行它,触发器经常用于加强数据的完整性和业务规则等。

触发程序时与表有关的命名数据库对象,当表上出现特定的事件时,将激活该对象。

1,处罚程序与命名为tbl_name的表相关,tbl_name必须引用永久性表,不能将触发程序与临时表和视图关联起来,。

2,Trigger_time是触发程序的动作时间,它可以是before或after以及instead of,指明触发程序是在激活它的语句之前或之后触发。

3,Trigger_event指明了激活触发程序的语句类型,即:(insert,delete,update)insert表示将新行插入表中的时候激活该触发程序。Delete表示在删除的时候触发,update表示在更新的时候触发程序。

触发器的语法:

CREATE TRRIGGER trigger_name --创建一个触发程序,名字

ON{table|view}--在哪个表上建立触发器

[WITH ENCRYPTION] --是否加密

{{FOR|AFTER|INSTEAD OF}{[INSET],[DELETE],[UPDATE]}} –什么时候触发

AS

[If Update()]

Begin --如果操作成功就执行,语句

--所执行的语句

End

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

deleted 与inserted 数据的差异

FromBorrowRecord br , Deleted d ,Insertedi --Deleted和Inserted临时表
Inserted
存放进行insert和update 操作后的数据
Deleted
存放进行delete 和update操作前的数据
注意:update 操作相当于先进行delete 再进行insert,所以在进行update操作时,修改前的数据拷贝一条到deleted表中,修改后
的数据在存到触发器作用的表的同时,也同时生成一条拷贝到insered表中

更新update触发

一,1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
这时候可以用到触发器。对于1,创建一个Update触发器:

Create Trigger truStudent
OnStudent--在Student表中创建触发器
forUpdate--为什么事件触发
As--事件触发后所要做的事情
ifUpdate(StudentID)
begin

Update BorrowRecord
SetStudentID=i.StudentID
From BorrowRecordbr , Deleted d ,Inserted i --Deleted和Inserted临时表
Wherebr.StudentID=d.StudentID

end

二,对于2,创建一个Delete触发器

2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。
Create trigger trdStudent
On Student
for Delete
As
Delete BorrowRecord
From BorrowRecord br , Deltedd
Where br.StudentID=d.StudentID
end
三,创建一个insert触发器

if exists(select * from sysobjects wherename=‘add_gy ' and type='tr')

droptrigger add_gy

go --之上的代码表示,如果触发器已经存在,则删除

create trigger add_gy on 供应

after insert

as

declare @tx varchar(30),@sl real

select @tx=条形码,@sl=供应数量 from inserted

update 商品 set 库存数量=库存数量+@sl where 条形码=@tx

--运行后查看供应表下的触发器add_gy已存在。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值