p2p网站建设广州,深圳网站设计公司哪家好,开发公司采购管理制度,网站建设所要花费的资金触发器
一、介绍
触发器是与表有关的数据库对象#xff0c;指在 insert/update/delete 之前或之后#xff0c;触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。
使用别名 OLD 和 NEW 来引用…触发器
一、介绍
触发器是与表有关的数据库对象指在 insert/update/delete 之前或之后触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。
使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容这与其他的数据库是相似的。现在触发器还只支持行级触发不支持语句级触发。
二、创建触发器
2.1 语法结构 :
create trigger trigger_name
before/after insert/update/delete
on tbl_name
[ for each row ] -- 行级触发器
begintrigger_stmt ;
end;2.2 示例 通过触发器记录 emp 表的数据变更日志 , 包含增加, 修改 , 删除 ;
创建emp表并往表中插入数据
create table emp(id int(11)not null auto_increment,name varchar(50)not null comment姓名,age int(11)comment年龄,salary int(11)comment薪水,primary key(id)
)engineinnodb default charsetutf8;insert into emp(id,name,age,salary)
values(null,金毛狮王,55,3800),(null,白眉鹰王,60,4000),(null,青翼蝠王,38,2800),(null,紫衫龙王,42,1800);SELECT * from emp;创建一张日志表emp_logs :
create table emp_1ogs(id int(11)not null auto_increment,operation varchar(20)not null comment操作类型,insert/update/delete,operate_time datetime not null comment操作时间,operate_id int(11)not null comment操作表的ID,operate_params varchar(500)comment操作参数,primary key(id)
)engineinnodb default charsetutf8;创建insert型触发器完成插入数据时的日志记录
# 创建insert型触发器完成插入数据时的日志记录
delimiter $
create trigger emp_logs_insert_trigger
after insert
on emp
for each row
begin insert into emp_logs(id,operation,operate_time,operate_id,operate_params)values(null,insert,NOW(),new.id,CONCAT(插入后(id:,new.id,,name:,new.name,,age:,new.age,,salary:,new.salary,)));
end $
delimiter ;# 查看触发器
show triggers;创建 update 型触发器完成更新数据时的日志记录 :
delimiter $
create trigger emp_logs_update_trigger
after update
on emp
for each row
begin insert into emp_logs(id,operation,operate_time,operate_id,operate_params)values(null,update,NOW(),new.id,CONCAT(修改前(id:,old.id,,name:,old.name,,age:,old.age,,salary:,old.salary,);,修改后(id:,new.id,,name:,new.name,,age:,new.age,,salary:,new.salary,)));
end $
delimiter ;
创建delete 行的触发器 , 完成删除数据时的日志记录 :
DELIMITER $
create trigger emp_logs_delete_trigger
after delete
on emp
for each row
begin insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,delete,now(),old.id,concat(删除前(id:,old.id,, name:,old.name,, age:,old.age,, salary:,old.salary,)));
end $
DELIMITER ; 6. 测试
insert into emp(id,name,age,salary)
values(null, 光明左使,30,3500); SELECT * from emp;SELECT * from emp_logs;insert into emp(id,name,age,salary)
values(null, 光明右使,33,3200); SELECT * from emp;SELECT * from emp_logs;update emp set age 39 where id 3;
SELECT * from emp;SELECT * from emp_logs;delete from emp where id 4;SELECT * from emp;SELECT * from emp_logs; 三、删除触发器
3.1 语法结构 :
drop trigger [schema_name.]trigger_name如果没有指定 schema_name默认为当前数据库 。 四、查看触发器
show triggers