Mysql触发器
2015-06-12 18:32
615 查看
一、概述
触发器主要用于监听某个表的insert,update以及delete等更新操作,这些操作一旦被执行,可以激活该表的触发程序如insert,update,delete等命令,实现数据维护。
二、功能
功能:
实现检查约束,对字段范围检查约束
维护冗余数据,保证数据的一致性
模拟外键级联选项,在表中外键的功能
三、语法格式
create trigger 触发器名 触发时间 触发事件 on 表名 for each row
begin
触发程序
end;
触发时间有before和after
before 表示在触发事件发生之前执行触发程序
after 表示在触发事件发生之后执行触发程序
触发事件有insert,update,delete
for each row表示行级触发触发器
new和old
new代表修改后的新纪录
old代表旧纪录,只能读
注意要点
1.创建触发器必须指定触发器属于哪个数据库
2.触发器不能产生结果集
3.同一个表不能创建两个相同的触发事件,触发时间的触发程序
四、举例
先说明delimiter的使用
delimiter //和delimiter
;两句,delimiter 是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,因此用这个命令转换一下";"为“//”,这样只有收到“//”才认为指令结束可以执行,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
1.实现检查约束
delimiter //
create trigger test_trigger before insert on couser for each row
begin
if(age>60) then
insert into falsetable values(0);
else
set new.age=old.age;
end;
//
delimiter ;
2.维护冗余数据
delimiter //
create trigger test before insert on student for each row
begin
update student set count=count+1 where new.no=old.no;
end;
//
delimiter ;
3.模拟外键级联选项
delimiter //
create trigger test before deleteon student for each row
begin
delete from student where age>old.no;
end;
//
delimiter;
delete from student where age=18;
五、对触发器的操作
查看触发器的定义
查看但前所有触发器
show triggers\G
查看指定触发器
show create trigger test\G
删除触发器
drop trigger 触发器名;
触发器主要用于监听某个表的insert,update以及delete等更新操作,这些操作一旦被执行,可以激活该表的触发程序如insert,update,delete等命令,实现数据维护。
二、功能
功能:
实现检查约束,对字段范围检查约束
维护冗余数据,保证数据的一致性
模拟外键级联选项,在表中外键的功能
三、语法格式
create trigger 触发器名 触发时间 触发事件 on 表名 for each row
begin
触发程序
end;
触发时间有before和after
before 表示在触发事件发生之前执行触发程序
after 表示在触发事件发生之后执行触发程序
触发事件有insert,update,delete
for each row表示行级触发触发器
new和old
new代表修改后的新纪录
old代表旧纪录,只能读
注意要点
1.创建触发器必须指定触发器属于哪个数据库
2.触发器不能产生结果集
3.同一个表不能创建两个相同的触发事件,触发时间的触发程序
四、举例
先说明delimiter的使用
delimiter //和delimiter
;两句,delimiter 是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,因此用这个命令转换一下";"为“//”,这样只有收到“//”才认为指令结束可以执行,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
1.实现检查约束
delimiter //
create trigger test_trigger before insert on couser for each row
begin
if(age>60) then
insert into falsetable values(0);
else
set new.age=old.age;
end;
//
delimiter ;
2.维护冗余数据
delimiter //
create trigger test before insert on student for each row
begin
update student set count=count+1 where new.no=old.no;
end;
//
delimiter ;
3.模拟外键级联选项
delimiter //
create trigger test before deleteon student for each row
begin
delete from student where age>old.no;
end;
//
delimiter;
delete from student where age=18;
五、对触发器的操作
查看触发器的定义
查看但前所有触发器
show triggers\G
查看指定触发器
show create trigger test\G
删除触发器
drop trigger 触发器名;
相关文章推荐
- hibernate+mysql时,会出现事物不管用
- Mysql的一些操作(删除表中的重复元素,查询重复元素)
- 【MySql】MySql基础使用详解
- windows上mysql常用操作
- MySQL:ERROR 2002 (HY000)
- Centeros 系统下error while loading shared libraries:libmysqlclient.so.18错误
- mysql学习课程 云课堂
- MySQL批量SQL插入性能优化
- mysql修改密码
- MySQL 中的自定义函数和存储过程 简单实例
- mysql存储过程注释
- Mysql 数据库权限导出
- mysql事务
- R语言使用RMySQL连接及读写Mysql数据库
- mysql主从复制(Master-Slave)
- 第一章:mysql安装for windows
- 使用tcmmaloc优化mysql的内存分配性能
- Mysql字符串截取函数SUBSTRING的用法说明
- case when出报表
- MySQL出现too many connections(1040)错误的解决办法