1、触发器的概念 所谓触发器(trigger)就是一系列SQL语句,当对数据库做修改(包括插入、删除和更新)时,它自动被系统执行。 2、要设置触发器机制,必须满足两个条件: ① 指明什么条件下触发器被执行,即触发条件; ② 指明触发器执行的动作是什么,即触发什么。 3、触发器的利弊 ① 一方面能够保证数据库的一致性; ② 另一方面,检测和维护触发器需要很大的开销,降低了数据库增、删、改的效率! 4、举例 例如,当银行某客户的帐户透支时,请将其帐户余额设为0,并且建立一笔xx,其金额为透支额。规定这笔xx的xx号为透支帐户的帐户号。 define trigger overdraft on update of account T (if new T.balance < 0 then ( insert into loan values(T.branch-name, T.account-number, -new T.balance) insert into borrower (select customer-name, account-number from depositor where depositor.account-number = T.account-number) update account S set S.balance = 0 where S.account-number = T.account-number)) 从广义上讲,约束实际上就是对数据库的一种限制,因此,可以把很多内容都看作是数据库的约束。例如,定义在一个关系上的约束可以有: ① 域约束 ② DEFAULT(缺省值约束) ③ NOT NULL(非空值约束) ④ PRIMARY KEY(主码约束) ⑤ FOREIGN KEY(外码约束) ⑥ CHECK(check约束) 而定义在整个数据库上的约束可以有: ① 断言 ② 触发器对约束来说,要注意以下两个问题: ⑴ 约束与系统性能的关系 ⑵ 约束的一致性检查顺序 ① 域约束 ② DEFAULT ③ NOT NULL ④ CHECK ⑤ 对有FOREIGN KEY约束的参照表的检查 ⑥ 对有FOREIGN KEY约束的被参照表的检查 ⑦ PRIMARY KEY ⑧ 断言 ⑨ 触发器 |