mysql的触发器

删除触发器
drop TRIGGER  触发器名字;

查找库里面的所有触发器
SELECT * FROM information_schema.`TRIGGERS`;
触发器语法

触发器(trigger):监视某种情况,并触发某种操作。

触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)

语法:

create trigger triggerName

after/before insert/update/delete on 表名

for each row   #这句话在mysql是固定的一般都是做行级触发所以这么写 但不是必须的  for each row 就代表每行都相应XXX事件(insert update delete) 理解成每当往表插入(更新 删除)一行的时候就触发

begin

sql语句;

end;
添加用户时的触发器
CREATE  TRIGGER add_trigger_us
AFTER INSERT on us_users
FOR EACH ROW
BEGIN

INSERT into us_person(`name`,age)VALUES(new.`name`,new.age); 

end

// insert into us_user(`name`,age)values(‘wang‘,10000); 注意:新插入的行用new来表示,行中的每一列的值用new.列名来表示。
修改用户时的触发器

CREATE TRIGGER update_trigger_us
AFTER UPDATE on us_person
for EACH ROW
BEGIN

UPDATE us_users set age=new.age where `name`=new.`name`;

END

//UPDATE us_person set age=9999 where `name`=‘wang‘;注意:

对于update而言:被修改的行,修改前的数据,用old来表示,old.列名引用被修改之前行中的值;


修改的后的数据,用new来表示,new.列名引用被修改之后行中的值。


删除时的触发器

CREATE  TRIGGER delete_trigger_us
AFTER DELETE on us_users
FOR EACH ROW

BEGIN

DELETE from  us_person where `name`=old.`name`;

end

//DELETE  from us_users where id=129007;

注意  delete中不存在new ,对于delete而言:原本有一行,后来被删除,想引用被删除的这一行,用old来表示,old.列名可以引用被删除的行的值。
先讲一下after和before的区别:

after是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;也就是说先插入订单记录,再更新商品的数量;

before是先完成触发,再增删改,触发的语句先于监视的增删改,我们就有机会判断,修改即将发生的操作;

例如:操作数据前判断,数据的值,进行修改

主要来源:http://www.cnblogs.com/zzwlovegfj/archive/2012/07/05/2578574.html
时间: 2024-10-13 03:01:37

mysql的触发器的相关文章

MySQL】触发器入门

MySQL 5.1包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象 ,即表的操作事件触发表上的触发器的执行. [创建触发器] 在MySQL中,创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定: trigger_time:标识

mysql之触发器trigger

mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 语法: create trigger triggerName after/before insert/update/delete on 表名 for each row   #这句话在mysql是固定的

MYSQL设置触发器权限问题的解决方法

本文实例讲述了MYSQL设置触发器权限的方法,针对权限错误的情况非常实用.具体分析如下: mysql导入数据提示没有SUPER Privilege权限处理,如下所示: ERROR 1419 (HY000): You do not have the SUPER Privilege and Binary Logging is Enabled 导入function . trigger 到 MySQL database,报错: You do not have the SUPER privilege an

mysql中触发器

触发器 场景: 日志系统,记录对学生表有哪些操作! 解决的问题: 1, 得到每条学生记录被修改的时机,才能发出记录日志的动作! 2, 执行某段操作,需要得到当前处理的记录的信息! 触发器:一种编程设计!类似js的基于事件编程的程序设计的理念!可以在某个表的每条记录上,设置一个事件,从而对该表上的某些操作,加以监听!一旦所监听的行为出现,则会执行相应的代码. 记录 =button (修改,删除,增加) =click 执行操作 =alert(‘Hello’); 以上的所有行为,都是采用 sql 完成

mysql之触发器trigger 详解

为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 语法: create trigger triggerName after/before insert/update/delete on 表名

MYSQL:基础——触发器

MYSQL基础--触发器 引入触发器 什么是触发器 如果你想要某条语句(或某些语句)在事件发生时自动执行.比如: 每当订购一个产品时,都从库存数量中减去订购的数量:无论何时删除一行,都在某个存档表中保留一个副本.就需要用到触发器.触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句): ? DELETE:? INSERT:? UPDATE: 说明: 其他MySQL语句不支持触发器.只有表才支持触发器.视图不支持,临时表也不支持. 创建触发器

MySQL数据库触发器(trigger)

MySQL触发器(trigger):监视某种情况并触发某种操作 一:四要素 触发时间:before/after 地点:table 监视操作:insert/update/delete 触发操作:insert/update/delete 二:创建触发器 delimiter $     #将sql结束符改为$  方便写触发的sql语句 create trigger triggerName after/before insert/update/delete on tableName for each r

mysql 事件 触发器 过程

sha1();           40位 sha();             40位 md5();           32位 password();   41位 case when then end 的用法 select sname 姓名,sscore 成绩, case when sscore is null then '补考' when sscore>=90 then '优秀' when sscore>=80 then '良好' when sscore>=60 then '及格'

mysql之触发器

触发器 MySQL语句在需要时被执行,存储过程也是如此.但是,如果你想要某条语句(或某些语句)在事件发生时自动执行,怎么办呢?例如:每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写:每当订购一个产品时,都从库存数量中减去订购的数量:无论何时删除一行,都在某个存档表中保留一个副本. 所有这些例子的共同之处是它们都需要在某个表发生更改时自动处理某个动作.这确切地说就是一个触发器. 触发器是MySQL 响应以下任意语句而自动执行任意其他的一条 MySQL语句(或位于B

mysql批处理/触发器/事务管理/存储过程

mysql里的批处理(sql语句) 格式: l mysql –u user –p < sql_file 表示从某个文件里执行sql语句 l mysql –u user –p < sql_file > out_file 表示从某个文件里执行,并将执行结果保存到out_file文件之中 举个例子: 小王每天早晨来之后,都需要查询班级共有多少人,还要查本学期共有几门课程,还要查询最近的考试成绩........需要做很多操作 sql.txt里  use pingtai;   //选择数据库 se