MySQL存储过程
MySQL存储过程语法:
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
SQL语句代码块
END
存储过程参数:
IN类型参数,接受外部的传入
OUT类型参数,将值输出到外部
INOUT类型参数,即接受传入也可输出
创建一个存储过程:
mysql> delimiter
mysql> create procedure insert_t1(IN par1 int,IN par2 char(5))
-> begin
-> insert into t1 values(par1,par2);
-> end
->
调用一个存储过程:
使用 CALL procedure_name(参数).
MySQL用户函数
MySQL用户函数语法:
CREATE FUNCTION function_name(参数列表)
RETURN type
BEGIN
SQL语句代码块
END
创建一个用户函数:
CREATE FUNCTION fn_count(n int)
RETURN INT
BEGIN
declare m int;
select count(*) into m from t1 where id < n;
return m
END
存储过程与函数的区别:
存储过程可以实现更加复杂的功能(更改数据库参数、DDL操作、嵌 套、包含事务控制语句、流控制语句等)
存储过程可以返回结果集,函数只能返回变量
函数可以用在select语句中
存储过程只能作为独立体调用
MySQL触发器
MySQL触发器概念:
触发器是基于某个指定事件触发执行的程序体。MySQL的触发器事件有:
insert(before,after)
update(before,after)
delete(before,after)
触发器语法:
CREATE TIRGGER trigger_name trigger_time
trigger event ON table_name FOR EACH ROW
BEGIN
SQL语句代码块
END
触发器中的New和old表:
在触发器中有两个特殊的临时表new与old,其表结构与触发器所在的表一致。new表捕获出入的新数据。old表捕获被删除的旧数据。
创建一个触发器:
CREATE trigger get_insert after insert ON
t1 for each row
BEGIN
insert into t2 values (new id,new name)
END
MySQL事件调度
MySQL事件调度概念:
MySQL中的事件调度就类似于Oracle中的作业。可以理解成一个时间触发 器,在特定的时间执行特定的操作,可以执行一次,可以重复执行。
事件调度语法:
CREATE EVENT eventname
ON SCHEDULE schedule
DO SQL 语句代码块
SCHEDULE:
执行一次:AT timestamp [+ interval]
重复执行:every interval starts timestamp ends timestamp
insterval:YEAR|QUARTER|MONTH|DAY|HOUR|MINUTE|WEEK
创建一个时间调度:
CREATE EVENT sec_insert
ON schedule every 1 second
DO insert into t2 values(1,'a')
启动时间调度:
使用set global event_scheduler=ON




