分类: 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