Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7688420
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: Mysql/postgreSQL

2011-07-20 20:30:44

触发器就是一个特殊的存储过程 触发不需要调用,只管声明定义,根据触发条件来执行

 触发器的优点

 1.自动完成服务器上功能

 2.记录监控可用访问服务器的状况

 3.验证数据合法性

 

触发器分类:

1.语句触发(是不能监测到客户数据)

2.行级触发(可以监测到客户数据)mysql只有行级触发

 

insert into tablebname values(value1,value2);

 

 触发器的语法

 create trigger  triggername

 before | after  insert | update | delete

 on table

 for each row//行级触发

 begin

  //sqlstate

 end;

 

 在触发器中,可以通过以下方式去访问当前记录的各个字段。

OLD.columnname返回一条现有记录在被修改或删除之前的内容(UPDATE,DELETE)

NEW.columnname返回一条新记录或被修改记录的新内容(INSERT,UPDATE)

 如何在行级触发器中获得数据

 1.insert:new.fieldbname

 2.update:old.fieldname new.filedname

 3.delete:old.fieldname

 

 例子:

 假设服务器已经存在一个表,要求实现对这个表同步备份

 create table t1(id int,name varchar(20));

 create table t2(id  int,name varchar(20));

 

 insert:

 insert into t1 values(1,'aaaa');

 

示例:

 create trigger t1_insert 

 after insert on t1

 for each row

 begin  

 insert into t2 values(new.id,new.name);

 end$$

 

示例:

 create trigger t1_delete

    -> after delete on t1

    -> for each row

    -> begin

    ->   delete from t2 where id=old.id;

    -> end$$

 

示例:

 create trigger t1_upate

    -> after update

    -> on t1

    -> for each row

    -> begin

    ->   update t2

    -> set name=new.name

    ->  where id=old.id;

    -> end

阅读(1036) | 评论(0) | 转发(2) |
0

上一篇:mysql 游标

下一篇:Mysql事务操作

给主人留下些什么吧!~~