触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化是自动生效,唤醒调用触发器以响应INSERT,DELETE,UPDATE语句
常见触发器有三种:分别应用于INSERT、UPDATE、DELETE事件;
例如:两个表如下:
CREATE TEBLE Student( ——学生表
StudentID int primary key, ——学号
... ... ...
)
CREATE TABLE BorrowRecord( ——学生借书记录表
BorrowRecord int Identity(1,1), ——流水号
StudentID int, ——学号
BorrowDate datetime, ——借出时间
ReturnDATE datetime, ——归还时间
)
功能一:如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关,也就是同时更改借书记录表的学号;
创建一个UPDATE触发器:
CREATE TRIGGER TruStudent ——创建触发器
ON Student ——在student表上创建触发器
for UPDATE ——触发器类型为UPDATE
AS
if UPDATE(StudentID) ——如果ID值更新了,触发器开始
begin
UPDATE BorrowRecord
set StudentID=i.StudentID ——设置ID值等于新的ID值
FROM BorrowRecord br,Inserted i,Deleted d
where br.StudentID=d.StudentID ——当BR表中的ID值等于旧的ID值事
功能二:如果该学生已经毕业,我希望删除他的学号的同时,也删除他的借书记录;
创建一个DELETE触发器
CREATE TIRIGGER TruStudent
ON Studrnt
FOR DELETE
AS
IF DELETE(StudentID)
begin
DELETE BorrowRecord
FROM BorrowRecord br ,deleted d
where br.StudentID=d.StudentID
PS:触发器中有两个虚拟表,分别为deleted、inserted,分别表示触发事件中“旧的一条记录”和“新的一条记录”