时间:2021-07-01 10:21:17 帮助过:31人阅读
MySQL从5.0.2版开始引入触发器,触发器就是一个已命名的数据库对象,这个对象和某张表 相关,而且当这张表发生某种特定事件后,触发器将被激活执行相应的动作,触发器允许这 些动作在这张表中的一行或多行的数据被操作的前后执行。在流行业务系统的处理过程中
MySQL从5.0.2版开始引入触发器,触发器就是一个已命名的数据库对象,这个对象和某张表 相关,而且当这张表发生某种特定事件后,触发器将被激活执行相应的动作,触发器允许这 些动作在这张表中的一行或多行的数据被操作的前后执行。在流行业务系统的处理过程中,开发和管理人员可以用触发器来实现数据审计和其他安全相关的功能,如在运行中的数据执行加密功能。结果显示如下图:
- mysql> delimiter //
- mysql> create trigger t_customer_insert before insert on customer
- -> for each row
- -> begin
- -> set NEW.customer_ssn = aes_encrypt(NEW.customer_ssn,'password');
- -> end;
- -> //
- Query OK, 0 rows affected (0.00 sec)
- mysql> delimiter ;
- mysql> insert into customer values (1,'fred','smith','456097234');
- Query OK, 1 row affected (0.00 sec)
- mysql> select * from customer;
下面再举一个触发器的例子,该例子可以计算所有插入某表的某个列中的数值的和:
- mysql> delimiter //
- mysql> CREATE PROCEDURE cursor_demo()
- -> BEGIN
- -> DECLARE a, b CHAR(16);
- -> DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
- -> OPEN cur1;
- -> REPEAT
- -> FETCH cur1 INTO a,b;
- -> UNDONE END REPEAT;
- -> CLOSE cur1;
- -> END
- -> //
可见触发器功能可以提高管理人员管理数据库的灵活性。
- 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;
(51CTO.COM教程)