暂无 |

1 Triggers的应用

在「cmdev」资料中有一个「emplog」表格,如果有人执行任何修改「cmdev.emp」表格资料的动作,都要新增一笔讯息到「cmdev.emplog」表格中,查询这个表格的资料,就可以知道在什么时候曾经修改过「cmdev.emp」表格中的资料:

栏位名称 型态 NULL 索引 预设值 其它资讯 说明
logno bigint(20) NO PRI NULL auto_increment 纪录编号
logdt timestamp NO CURRENT_TIMESTAMP 日期时间
message varchar(64) YES NULL 讯息

要完成这样的需求,每一次修改「cmdev.emp」表格资料时,你都必需执行下列的工作:

mysql_16_snap_01

要完成这样的需求,你可以使用stored routines来处理修改与新增纪录的工作,或是在应用程式中撰写程式来解决。不过都会是一件很麻烦的事情,而且比较容易造成遗漏纪录的情况。

MySQL资料库提供一种特别的资料库元件,称为「triggers」,一般会把它称为「触发器」。Triggers可以让你先把一些在特定状况要执行的叙述储存起来,MySQL资料库会在正确的时机自动帮你执行这些叙述:

mysql_16_snap_02

以上列讨论的需求来说,每一次修改「cmdev.emp」表格资料,都必须新增一笔纪录到「cmdev.emplog」表格中。这个需求的主角是「cmdev.emp」表格,所以你可以为这个表格建立一个trigger元件;因为是在修改资料的情况时才需要执行特定的工作,所以你要选择「UPDATE trigger」;新增一笔纪录到「cmdev.emplog」表格中的叙述就是储存在「cmdev.emp」表格的「UPDATE trigger」中。

如果你建立好需要的trigger元件后,MySQL资料库就会自动帮你执行这些工作:

mysql_16_snap_03

java教程
php教程
php+mysql教程
ThinkPHP教程
MySQL
C语言
css
javascript
Django教程

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论