Mysql5.0 触发器
1.语法:( 步长)触发间隔
CREATE TRIGGER <触发器名称>
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON <表名称>
FOR EACH ROW <--
<触发的SQL语句>
触发器的执行间隔:FOR EACH ROW子句通知触发器
每隔一行执行一次动作,而不是对整个表执行一次。
2. NEW,OLD
在触发器的SQL语句中,你可以关联表中的任意列。但你不能仅使用列的名称去标识,那会使系统混淆,因为那里可能会有列的新名(这可能正是你要修改的,你的动作可能正是要修改列名),还有列的旧名存在。因此你必须用这样的语法来标识: "NEW . column_name"或者"OLD . column_name".这样在技术上处理(NEW | OLD . column_name)新和旧的列名属于创建了过渡变量("transition variables")。
3.简单实例
delimiter $$
create trigger groups_forSchool
before insert on groups
for each row
begin
set NEW.school='scut';
end $$
delimiter ;
当我们要向表中的行插入时,触发器就会被激活,执行将school列的值改为'scut'的动作。
4.加密实例
一个客户数据库中包含客户密码pwd,管理员必须将这些信息加密后存入磁盘。针对这种情况,管理员可以通过创建一个触发器来自动获取并加密这些数据然后再插入相应的数据库表中。如下所示:(参考 小题大作)
mysql> delimiter //
mysql> create trigger t_customer_insert before insert on customer
-> for each row
-> begin
-> set NEW.pwd = aes_encrypt(NEW.pwd,'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;
可以看出存在磁盘数据库表中的客户密码pwd已经变成加密后的不可读乱码格式。
/* 加密函数:AES_ENCRYPT(str,key_str)*/
- 上一篇:Mysql数据库管理系统优化方案
- 下一篇:Mysql5.0 存储过程
- 最新评论 查看所有评论
-
- 发表评论 查看所有评论
-
- 使用distinct在mysql中查询多条不重复记录值的解
- MySQL 服务无法启动系统发生 1067 错误
- MySQL数据库接口的VC具体实现与应用
- MySQL (C API)VC实例及代码下载
- 精妙SQL语句
- MySQL 5.0 新特性教程 存储过程:第三讲
- MySQL 5.0 新特性教程 存储过程:第四讲
- 学习MySQL常用操作命令
- GOT error 127 from table handler解决办法
- 解析:mysql 8小时空闲后连接超时的问题
- EMS SQL Manager 2005 for MySQL (ver.3.5)发布
- 从 MySql 导出数据到 Access中——完全篇
- MySQL用户Root密码为弱口令的攻击
- 整理了一些t-sql技巧
- MySQL 5.0新特性教程 存储过程:第一讲
- MySQL数据库中的外键约束详解
- Silverlight中连接MySQL数据库实例详解
- MySQL数据库安全解决方案
- 最简便的MySql数据库备份方法
- mysql随Linux开机自动启动
- 数据库安全应用 使用MySQL的23个注意事项
- 讲解MaxDB数据库和MySQL数据库的主要差别
- 数据库基础:MySQL 添加用户的两种方法
- 让php5支持mysql
- MySQL数据库5.4 Beta最新升级版本发布
- MySQL 5.1数据库系列最新版本5.1.34发布
- 实例讲解如何配置MySQL数据库主从复制
- 详细讲解Linux下实时监控MySQL的工具Mtop
- REPAIR TABLE语法介绍——MySQL数据库
- phpMyAdmin 3.1.3.1 -- MySQL管理利器

