免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 923 | 回复: 0
打印 上一主题 下一主题

Mysql 触发器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:53 |只看该作者 |倒序浏览

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

 触发器的优点

 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

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP