MySQL触发器
MySQL触发器
一、 MySQL触发器概念
MySQL5.0以上版本支持触发器,触发器是与表有关的命名数据库对象,当表出现特定事件时,将激活该对象。
二、 MySQL触发器语法
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
trigger_time:触发动作时间,可以是BEFORE或AFTER,以指明触发程序是在激活它的语句之前或之后触发。BEFORE update能否取到new.字段值?BEFORE AFTER使用时的区别?
Before与After区别:before:(insert、update)可以对new进行修改,after不能对new进行修改。两者都不能修改old数据。
在本表插入字段值需要用new计算,只能用before,在别的表中记录插入成功记录或统计插入的条数用after。
trigger_event:激活触发程序的语句类型。
INSERT:将新行插入表时激活触发程序,如INSERT、LOAD DATA和REPLACE语句。
UPDATE:更改某一行时激活触发程序,如UPDATE语句。
DELETE:从表中删除某一行时激活触发程序,如DELETE和REPLACE语句
trigger_stmt:触发程序激活时执行的语句。如果你打算执行多个语句,可使用BEGIN ... END复合语句结构。
DELIMITER |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE from test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END
|
DELIMITER ;
注:
1、 使用别名OLD和NEW,能够引用与触发程序相关的表中的列。OLD.col_name在更新或删除它之前,引用已有行中的1列,是否可以引
用old与trigger_time无关,NEW.col_name在更新它之后引用将要插入的新行的1列或已有行的1列。
INSERT:只可引用NEW、DELETE:只可引用OLD、 UPDATE:可以引用NEW或OLD。
2、激活触发程序时,对于触发程序引用的所有OLD和NEW列,需要具有SELECT权限,对于作为SET赋值目标的所有NEW列, 需要具
有UPDATE权限。
3、CREATE TRIGGER语
相关文档:
原文:http://blog.csdn.net/gnuhpc/archive/2010/01/01/5118123.aspx
仅仅是看一些书是零零散散记下的,给自己备忘而已。建议去看专业网站的笔记。
1.主键的值必须是唯一的,并且不能为空,这可以提高MySQL从多个表中取得数据或者取得指定键值对应的行的速度。MySQL通过一个特殊的称为Index索引的数据结构做到这一点,In ......
连接MySQL数据库时常会出现如下的错误提示:
#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
出现这种问题是在MySQL4.1以上版本,原因MySQL服务器版本使用了新的密码验证机制,其解决方法如下:
mysql>;set password for '用户名' @ '主机名' = old ......
mysql数据库导出要用到MySQL的mysqldump工具,基本用法是:
shell> mysqldump [OPTIONS] database [tables]
如果你不给定任何表,整个数据库将被导出。
通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。
注意,如果你运行mysqldump没有--quick或--opt选项,mysq ......
1)、去sun的官网下载一个mysql的压缩包,我下载的是mysql-noinstall-5.5.0-m2-win32.zip。
2)、把上面下载的压缩包解压到:D:\Program Files\mysql下面。
3)、在 D:\Program Files\mysql\ 中找 my-large.ini 把它复制成 my.ini。
4)、在 my.ini 中找 [mysqld] ,添 ......
mysql字符集查看以及修改
http://blog.csdn.net/cs870101/archive/2009/09/23/4580879.aspx
转自:http://blog.chinaunix.net/u2/85344/showart_2042280.html
Liunx下修改MySQL字符集:
1.查找MySQL的cnf文件的位置
find / -iname '*.cnf' -print
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-la ......