MySql中可以使用触发器来得到数据库中数据的变动日志,是管理数据的有力工具。触发器不用直接调用,而是对表的不同操作来触发不同的触发器,现将之总结一下。
/*************************触发器******************************************/ 一、创建触发器 1、BEFORE INSERT型触发器 mysql> delimiter ## mysql> create table hjf.logtab -> (id int not null auto_increment primary key, -> oname varchar(20), -> otime varchar(30))## Query OK, 0 rows affected (0.01 sec) mysql> create trigger hjf.fstin -> before insert ON newInfo -> for each row -> begin -> insert into logtab(oname, otime) value('hjf', SYSDATE()); -> end## Query OK, 0 rows affected (0.43 sec) mysql> insert into hjf.newInfo values(12, 'Naic', 23.12, 2, 3)## Query OK, 1 row affected (0.03 sec) mysql> select * from hjf.logtab## +----+-------+---------------------+ | id | oname | otime | +----+-------+---------------------+ | 1 | hjf | 2017-04-08 20:18:01 | +----+-------+---------------------+ 1 row in set (0.00 sec) mysql> select * from newInfo where id = 12## +----+------+-------+-----------+-----------+ | id | name | score | subjectid | teacherid | +----+------+-------+-----------+-----------+ | 12 | Naic | 23.12 | 2 | 3 | +----+------+-------+-----------+-----------+ 1 row in set (0.00 sec) 2、AFTER INSERT型触发器 mysql> create trigger hjf.secinsertrg -> after insert ON newInfo -> for each row -> begin -> insert into logtab(oname, otime) value('hjf_after', SYSDATE()); -> end## Query OK, 0 rows affected (0.01 sec) mysql> insert into hjf.newInfo values(14, 'Maic', 23.12, 2, 3)## Query OK, 1 row affected (0.00 sec) mysql> select * from logtab## +----+-----------+---------------------+ | id | oname | otime | +----+-----------+---------------------+ | 1 | hjf | 2017-04-08 20:18:01 | | 2 | hjf | 2017-04-08 20:27:32 | | 3 | hjf_after | 2017-04-08 20:27:32 | +----+-----------+---------------------+ 3 rows in set (0.00 sec) mysql> select * from newInfo where id = 14## +----+------+-------+-----------+-----------+ | id | name | score | subjectid | teacherid | +----+------+-------+-----------+-----------+ | 14 | Maic | 23.12 | 2 | 3 | +----+------+-------+-----------+-----------+ 1 row in set (0.00 sec) 二、删除触发器 mysql> drop trigger hjf.secinsertrg## Query OK, 0 rows affected (0.00 sec) 三、修改触发器 mysql> drop trigger hjf.secinsertrg## Query OK, 0 rows affected (0.00 sec) mysql> create trigger hjf.secinsertrg -> before delete ON newInfo -> for each row -> begin -> insert into logtab(oname, otime) value('hjf_after', SYSDATE()); -> end## Query OK, 0 rows affected (0.01 sec) /*****************************************************************************/
