lshow triggers;
查询当前数据库下所有表的触发器
在information_schema数据库下,有一个表叫triggers,里面保存了所有数据的触发器信息
ldrop triggers trigger_name ;
删除触发器
例题1:
l在新同学入学时,将他的姓名和年龄存至另外一个表内
创建触发器
使用触发器
向student表插入数据的之后,会向stu表插入新数据的姓名和年龄
关键字new和old的区别:
例2:
l删除一个部门之前,先删除掉这个部门下的所有员工
Delete from department where name=’市场部’;
1市场部
Old.id=1
例3:
记录学生的改名记录
当一个学生改名时,把原名和新名插入到一个表中,并保存改名的时间
十八、事务管理
为保证数据库内容的一致,就要将数据库的一组操作作为一个整体来进行,要么全部成功完成,要么全部失败退出。
开启事务处理的方式:
l标准事务:start transaction
l非标准:set autocommit=0
区别?????????
标准的:遇到commit或rollback语句,则认为是事务终止,后面的语句会立即写入到文件
非标准的:即使遇到commit或rollback语句,后面语句仍然处于事务之中,说明不会写入到文件
lset autocommit = { 0 | 1 } 设置是否为自动提交
set autocommit=0:表示关闭自动提交模式
set autocommit=1:表示开启自动提交模式
lstart transaction:开启标准事务
lcommit:提交事务
lrollback:回滚事务
Set autocommit=0;//关闭自动提交模式
Delete from student;
Delete from subject;
//到此为止,数据没有真正写入到文件
//Commit;
//如果执行commit,数据真正写入
//Rollback
//事务回滚
问题?
有10条数据
先删除 3条
Commit;
先删除3条
Rollback;
Savepoint 还原点1;
操作………………..
Savepoint 还原点2;
操作………………
Savepoint 还原点3;
操作………………
Rollback to 还原点(还原到指定的还原点)
还原到指定的还原点之后,这个还原点之后的还原点会自动消失
十九、存储过程
l大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程像是我们SQL里的函数
我们只需要定义存储过程,在调用时,通过指定参数,就可以帮助我们完成一些功能!
1、创建语法:
create procedure sp_name
[参数名] [类型],[参数名] [类型]
begin
.........
end
create procedure:关键字(创建存储过程)
sp_name:存储过程名称
[type]:in、out、inout
in:输入参数(在调用存储过程时,必须指定)
out:输出参数(必须指定,可以在存储过程中被修改)
[参数名]
[参数类型]:数据类型
Begin:关键字
Sql:
Sql:
End:关键字
2、查看与删除
select name from mysql.proc where db=’数据库名’;
我们创建的所有存储的信息,会保存到mysql数据库下proc表中
show procedure status where db='数据库名';
show create procedure 数据库.存储过程名;
drop procedure 数据库.存储过程名;
3、调用语法:
call sp_name [参数名]
例1:
l执行一条插入数据的语句
调用以上这个存储过程:
call proc1();
4、关于参数
In:输入参数(如果不指定,默认为in)
Out:输出参数
Inout:输入输出参数
例2:
创建一个存储过程,要求有两个输入参数分别为姓名和年龄,用户调用存储过程时需要指定两个参数,然后将传递的值插入至表中。
call proc(‘楚留香’,30);
例3:
查询年龄最大的同学的姓名
Select name from student order by age desc limit 1;
例4:
创建一个存储过程,要求可根据学生编号查询出学生的姓名和年龄
学生编号:输入参数
姓名:输出参数
年龄:输出参数
触发器:
在update、insert、delete操作之前或之或触发的sql程序
Before:之前
After:之后
一个最多6个触发器
事务处理:
只有innodb表类型支持
Myisam不能事务处理
标准、非标准
Start transaction
Set autcommit=0;
Commit;
Rollback;
存储过程:
可以指定参数
调用存储过程时必须顺序指定这几个参数