SQL触发器

创建表:
create table student (
     studentID int primary key identity(1,1),    -------------自增长,标识为1
       studentname   varchar(50),
)


create table borrowreader(
borrowID  int primary key identity(1,1),
studentID  int,
borrowdate  varchar(50),
)


 

触发器作用:更改学生学号时,同时更改学生借书表的学号

 

 

创建一个UPDATE触发器:

 

create trigger updateID 
on borrowreader
for  update
as

if  update(studentID)

begin

update  borrowreader
set     studentID=i.studentID
from    borrowreader  br,Deleted  d,Insertd i  ------deleted表和insertd临时表

where  br.studentID=d.student.ID
end


 

 

理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。      一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:                              虚拟表Inserted                     虚拟表Deleted 在表记录新增时     存放新增的记录                         不存储记录          修改时           存放用来更新的新记录                   存放更新前的记录          删除时           不存储记录                             存放被删除的记录

 

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

 

 

创建一个Delete触发器:作用  在删除学生ID的时候,也删除borrowreader里的ID

 

 

Create trigger trdStudent 
       On Student 
       for Delete 
     As 
       Delete BorrowRecord 
         From BorrowRecord br , Delted d 
         Where br.StudentID=d.StudentID 


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

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值