触发器
触发器 "是DBMS系统自动执行的一个语句,作为对数据库进行修改的副作用。
为了设计一个触发器机制,需要用到以下两个要求。
- 指定触发器必须执行的时间。
- 指定当触发器被执行时要采取的行动。
考虑以下关系'student'。
R1: STUD-2 R2:COURSE-1
SNo SName DNo Tot-Credits CNo Title DNo Credits
121 xyz 21 80 61 DBMS 21 10
123 pqr 21 70 62 DAA 21 10
126 mnp 22 68 64 SE 22 8
128 abc 22 38 65 CO 22 8
130 jkl 23 48 67 OS 23 10
————————————————- — ————————————-
考虑以下关系。 R7 : TAKES
Stud_id Course_id Sec_id Semester Year Grade
121 61 1 4 2021 A
123 62 1 4 2021 B
126 64 1 4 2021 B
128 65 2 4 2021 F
130 67 2 4 2021 C
在对(年级)进行更新后,创建触发器 "学分"(Credits_Earned)。
引用新行作为 "newrow"。
引用旧行作为 "oldrow"。
对于每一行
当newrow.grade <> 'F' 并且newrow.grade不是空时
,并且(oldrow.grade = 'F' 或者oldrow.grade为null)
开始原子式
更新student-2
设置 tot_credits = tot_credits +
(选择学分
from course-1
where course.course-1.CNo = newrow.course.id )
where student.id = newrow.id ; end ;
注意:在这里,"引用旧行作为 "子句可以用来创建一个变量,存储更新或删除的行的旧值。
引用新行作为 "子句除了用于插入外,还可以用于更新。
换句话说,"触发器 "定义了当某些事件发生并满足相应条件时自动执行的动作。
The postTriggersappeared first oni2tutorials.