mysql怎么查看触发器 mysql查看触发器创建语句( 二 )


mysql CREATE TRIGGER t1 AFTER UPDATEON accounts
FOR EACH ROW INSERT INTO audit (id, balance, user, time)
VALUES (OLD.id, NEW.balance, CURRENT_USER(), NOW());
Query OK, 0 rows affected (0.04 sec)
列表D
要是已经走到这一步,就很容易理解 。accounts表格每经历一次UPDATE,触发器插入(INSERT)对应记录的id、新的余额、当前时间和登录audit表格的用户的名称 。
实现中的例子:用触发器审计记录
既然了触发器的基本原理,来看一个稍稍复杂的例子 。常用触发器来建立一个自动“审计记录”,以记录各种用户对数据库的更改 。为了解审计记录的实际应用,请看下面的表格(表格名:accounts),它列出了一个用户的三个银行账户余额 。(表A)
mysql SELECT * FROM accounts;
+----+------------+---------+
| id | label| balance |
+----+------------+---------+
|1 | Savings #1 |500 |
|2 | Current #1 |2000 |
|3 | Current #2 |3500 |
+----+------------+---------+
3 rows in set (0.00 sec)
表A
然后,检查触发器是否被激活:
mysql SHOW TRIGGERS \G
*************************** 1. row ***************************
?Trigger: t1
?Event: UPDATE
?Table: accounts
Statement: INSERT INTO audit (id, balance, user, time)
VALUES (OLD.id, NEW.balance, CURRENT_USER(), NOW())
Timing: AFTER
?Created: NULL
Sql_mode:
1 row in set (0.01 sec)
再来看最后的结果(列表E):
mysql UPDATE accounts SET balance = 500 WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1?Changed: 1?Warnings: 0
mysql UPDATE accounts SET balance = 900 WHERE id = 3;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1?Changed: 1?Warnings: 0
mysql UPDATE accounts SET balance = 1900 WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1?Changed: 1?Warnings: 0
列表E
注意,对accounts表格所作的改变已被记录到audit表格中,将来如果出现问题,可以方便地从中进行恢复 。
mysql SELECT * FROM audit;
+------+---------+----------------+---------------------+
| id| balance | user| time|
+------+---------+----------------+---------------------+
|1 |500 | root@localhost | 2006-04-22 12:52:15 |
|3 |900 | root@localhost | 2006-04-22 12:53:15 |
|1 |1900 | root@localhost | 2006-04-22 12:53:23 |
+------+---------+----------------+---------------------+
3 rows in set (0.00 sec)
mysql怎么创建触发器1、先创建一个空的person_log表用来存放被删除的记录 。
2、创建一个触发器del_personmysql怎么查看触发器,执行删除操作后将记录插入到person_log表 。
触发器person_log
3、从person表中执行删除记录操作来触发事件
4、查看person_log表结果mysql怎么查看触发器:
结果:从person表执行删除一条记录后会触发person_log表中增加被删除的记录 。
mysql中的存储过程、触发器、视图的用法建立存储过程
Create procedure、Create function
下面是它们的格式:
Create proceduresp_Name ([proc_parameter ])
routine_body
这里的参数类型可以是 IN OUT INOUTT,意思和单词的意思是一样的,IN表示是传进来的参数,
OUT是表示传出去的参数,INOUT是表示传进来但最终传回的参数 。
Create functionsp_Name ([func_parameter ])
Returns type
Routine_body
Returns type 指定了返回的类型,这里给定的类型与返回值的类型要是一样的 , 否则会报错 。
下面给出两个简单的例子来说明:
1、 显示Mysql当前版本
执行结果
mysql use welefen;
Database changed
mysql delimiter //#定义//作为结束标记符号
mysql create procedure getversion(out param1 varchar(50)) #param1为传出参数

推荐阅读