本文摘自PHP中文网,作者(*-*)浩,侵删。
mysql存储过程是在大型数据库系统中, 一组为了完成特定功能的SQL语句集;而触发器是一种特殊类型的存储过程;触发器不同于存储过程,触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
存储过程: 是在大型数据库系统中, 一组为了完成特定功能的SQL 语句集。触发器:触发器是一种特殊类型的存储过程,它又不同于存储过程,触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
存储过程:
是在大型数据库系统中,
一组为了完成特定功能的SQL 语句集,
存储在数据库中,经过第一次编译后再次调用不需要再次编译,
用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程是数据库中的一个重要对象
优点:
1允许模块化程序设计(创建一次多次使用)
2允许更快执行
3减少网络流量
4更好的安全机制
格式:
1 2 3 4 5 6 |
|
调用过程:
用call 过程名( )
查看所有的存储过程show procedure status;
查看创建的存储过程show create procedure 过程名;
删除过程 drop procedure 过程名
In 表示参数从外部传入到里面使用(过程内部使用)
Out 表示参数从过程里边把数据保存到变量中,交给外部使用,所有传入的必须是变量 如果说传入的out变量本身在外部有数据,那么在进入过程之后,第一件事就是被清空,设为null
Inout 数据可以从外部传入到过程内部使用,同时内部操作之后,又会将数据返回给外部
触发器:
触发器是一种特殊类型的存储过程,它又不同于存储过程,
触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
作用:
1.可在写入数据表前,强制检验或转换数据
2.触发器发生错误时,异动的结果会被撤销
格式
1 2 3 4 5 6 7 |
|
触发对象 :on 表 for each row 触发器绑定实质是表中的所有行,因此当每一行发生改变的时候,就会触发触发器
触发时机:每张表中对应的行都会有不同的状态,当SQL 指令发生的时候,
都会令行中的数据发生改变,每一行总会有两个状态。操作数据之前(before),操作数据(after)之后
触发事件:
Mysql中触发器针对的目标是数据发生改变,对应的操作只有(增,删,改)查询不发生数据的改变,
所以查询没有触发事件
注意事项:
一张表中,每一个触发器时机绑定的触发事件对应的触发器类型只能有一个;
一张表中只能有一个after insert 触发器 因此,一张表中最多的触发器只能有六个
创建存储过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
创建触发器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
以上就是mysql存储过程和触发器的区别的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。