正文:
存储过程: 是在大型数据库系统中, 一组为了完成特定功能的
SQL
语句集。触发器:触发器是一种特殊类型的存储过程,它又不同于存储过程,触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
存储过程: 是在大型数据库系统中, 一组为了完成特定功能的SQL
语句集, 存储在数据库中,经过第一次编译后再次调用不需要再次编译, 用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 存储过程是数据库中的一个重要对象。
优点: 1 允许模块化程序设计(创建一次多次使用) 2 允许更快执行 3 减少网络流量 4 更好的安全机制
格式:
DELIMITER
//
CREATE
PROCEDURE
储存名([ IN
,OUT
,INOUT
]?参数名?数据类形...)
BEGIN
SQL
语句
END
//
DELIMITER
;
调用过程:
用 call
过程名( )
查看所有的存储过程 show
procedure
status
; 查看创建的存储过程 show
create
procedure
过程名; 删除过程 drop
procedure
过程名
In
表示参数从外部传入到里面使用(过程内部使用) Out
表示参数从过程里边把数据保存到变量中,交给外部使用,所有传入的必须是变量 如果说传入的 out
变量本身在外部有数据,那么在进入过程之后,第一件事就是被清空,设为 null
Inout
数据可以从外部传入到过程内部使用,同时内部操作之后,又会将数据返回给外部
触发器:
触发器是一种特殊类型的存储过程,它又不同于存储过程, 触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
作用: 1.可在写入数据表前,强制检验或转换数据 2.触发器发生错误时,异动的结果会被撤销
格式
DELIMITER
//
Create
trigger
--触发器名字 触发时机 触发事件 on
表 for
each
row
Begin
--操作的内容
End
//
DELIMITER
;
触发对象 :on
表 for
each
row
触发器绑定实质是表中的所有行,因此当每一行发生改变的时候,就会触发触发器 触发时机:每张表中对应的行都会有不同的状态,当 SQL
指令发生的时候, 都会令行中的数据发生改变,每一行总会有两个状态。操作数据之前(before
),操作数据(after
)之后 触发事件: My
sql
中触发器针对的目标是数据发生改变,对应的操作只有(增,删,改)查询不发生数据的改变, 所以查询没有触发事件 注意事项: 一张表中,每一个触发器时机绑定的触发事件对应的触发器类型只能有一个; 一张表中只能有一个 after
insert
触发器 因此,一张表中最多的触发器只能有六个
创建存储过程
return
true
;
}
return
false
;
}
userService
.saveUser
("zhangcuishan
", "亚索", 1, 2, "15645678941");
创建触发器
创建两张表
测试 insert
into
my_orders
values
(null
,3,5);
以上就是mysql
存储过程和触发器的区别的详细内容。
转载请注明:汇站网 » mysql存储过程和触发器的区别