创建表:
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.触发机制。