教你快速掌握 MySQL数据库中触发器的应用(2)

时间:2008-12-03 15:33:00 

激活触发器后,开始对它进行测试。试着在data表格中插入几个记录:


mysql> INSERT INTO data (name) VALUES ('Sue'), ('Jane');

Query OK, 2 rows affected (0.00 sec)

Records: 2?Duplicates: 0?Warnings: 0


然后检查chars表格看触发器是否完成它该完成的任务:


mysql> SELECT * FROM chars;

+-------+

| count |

+-------+

| 7|

+-------+

1 row in set (0.00 sec)


如你所见,data表格中的INSERT命令激活触发器,它计算插入记录的字符数,并将结果存储在chars表格中。如果你往data表格中增加另外的记录,chars.count值也会相应增加。

触发器应用完毕后,可有DROP TRIGGER命令轻松删除它。


mysql> DROP TRIGGER t1;

Query OK, 0 rows affected (0.00 sec)


注意:理想情况下,你还需要一个倒转触发器,每当一个记录从源表格中删除时,它从字符总数中减去记录的字符数。这很容易做到,你可以把它当作练习来完成。提示:应用BEFORE DELETE ON子句是其中一种方法。

现在,我想建立一个审计记录来追踪对这个表格所做的改变。这个记录将反映表格的每项改变,并向用户说明由谁做出改变以及改变的时间。我需要建立一个新表格来存储这一信息(表格名:audit),如下所示。


mysql> CREATE TABLE audit (id INT(7),
 balance FLOAT, user VARCHAR(50)

NOT NULL, time TIMESTAMP NOT NULL);

Query OK, 0 rows affected (0.09 sec)


接下来,我将在accounts表格中定义一个触发器。


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)


注释:accounts表格每经历一次UPDATE,触发器插入(INSERT)对应记录的id、新的余额、当前时间和登录audit表格的用户的名称。

标签:MySQL,触发器,数据库
0
投稿

猜你喜欢

  • python调用matplotlib模块绘制柱状图

    2024-01-02 04:35:16
  • SQL学习笔记四 聚合函数、排序方法

    2011-09-30 11:33:29
  • JavaScript观察者模式(publish/subscribe)原理与实现方法

    2024-04-10 10:44:15
  • SQLSERVER 时间格式大全

    2024-01-28 12:13:33
  • 利用Python检测URL状态

    2022-12-29 23:03:52
  • python re.sub()替换正则的匹配内容方法

    2022-09-13 08:10:30
  • ES6的循环与可迭代对象示例详解

    2024-05-02 17:25:22
  • Go语言流程控制之goto语句与无限循环

    2023-08-31 06:43:00
  • Selenium python时间控件输入问题解决方案

    2023-09-05 19:35:25
  • Go语言的互斥锁的详细使用

    2024-03-11 04:04:30
  • ASP 常见对象总结(熟悉一下利用以后的开发使用)

    2011-03-07 10:57:00
  • Python中super函数用法实例分析

    2023-12-05 14:36:19
  • js断点调试心得分享(必看篇)

    2023-07-06 22:13:25
  • phpMyAdmin开发人员访谈——4个人支持整个项目

    2010-05-26 15:34:00
  • Python的基本语法详解

    2022-10-27 22:38:42
  • asp获取数据库中表名和字段名的代码

    2011-04-18 11:02:00
  • 详解golang中bufio包的实现原理

    2024-04-28 09:13:34
  • 浅述python2与python3的简单区别

    2022-03-06 21:19:47
  • 详解使用vscode+es6写nodejs服务端调试配置

    2023-07-17 17:17:37
  • python3定位并识别图片验证码实现自动登录功能

    2022-07-23 13:23:59
  • asp之家 网络编程 m.aspxhome.com