百利安内衣:数据库中Triggers的作用已经用法

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 23:34:53
高分求教:
在数据库中有一个Triggers,它是做什么用的,在数据库中起到什么作用,详细用法用途是什么?希望高手们能给出它的具体作用以及引用出处,感谢!

Trigger,故名思义,触发器。
简单点说,那个就是个数据库软件里的触发装置,用sql语句编写,作用有很多,比如,编写一个触发器,当对一个表进行delete或update的时候,触发,使得与其相关联的另一个表中的数据更新。。。
触发器的功能还有很多,用法也并不复杂,上网上随便一搜索,就能找到很多了。

TRIGGERS表提供了关于触发程序的信息。

必须有SUPER权限才能查看该表。

TRIGGER_SCHEMA和TRIGGER_NAME列中分别含有相应数据库的名称以及触发程序的名称,在该数据库中,含有该触发程序。

MySQL 5.1包含对触发程序的支持。触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。例如,下述语句将创建1个表和1个INSERT触发程序。触发程序将插入表中某一列的值加在一起:

mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account
-> FOR EACH ROW SET @sum = @sum + NEW.amount;

CREATE TRIGGER语法
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。

触发程序与命名为tbl_name的表相关。tbl_name必须引用永久性表。不能将触发程序与TEMPORARY表或视图关联起来。

trigger_time是触发程序的动作时间。它可以是BEFORE或AFTER,以指明触发程序是在激活它的语句之前或之后触发。

trigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:

· INSERT:将新行插入表时激活触发程序,例如,通过INSERT、LOAD DATA和REPLACE语句。

· UPDATE:更改某一行时激活触发程序,例如,通过UPDATE语句。

· DELETE:从表中删除某一行时激活触发程序,例如,通过DELETE和REPLACE语句。

请注意,trigger_event与以表操作方式激活触发程序的SQL语句并不很类似,这点很重要。例如,关于INSERT的BEFORE触发程序不仅能被INSERT语句激活,也能被LOAD DATA语句激活。

可能会造成混淆的例子之一是INSERT INTO .. ON DUPLICATE UPDATE ...语法:BEFORE INSERT触发程序对于每一行将激活,后跟AFTER INSERT触发程序,或BEFORE UPDATE和AFTER UPDATE触发程序,具体情况取决于行上是否有重复键。

对于具有相同触发程序动作时间和事件的给定表,不能有两个触发程序。例如,对于某一表,不能有两个BEFORE UPDATE触发程序。但可以有1个BEFORE UPDATE触发程序和1个BEFORE INSERT触发程序,或1个BEFORE UPDATE触发程序和1个AFTER UPDATE触发程序。

DROP TRIGGER语法
DROP TRIGGER [schema_name.]trigger_name
舍弃触发程序。方案名称(schema_name)是可选的。如果省略了schema(方案),将从当前方案中舍弃触发程序。