MySQL基础之--存储过程

存储过程

  • 这里的知识点分为两个部分:
    • 一个是:存储过程
    • 一个是:存储函数(也称为用户自定义函数
  • 两者之间的区别:
    • 与存储过程唯一不同的一点是,存储函数在执行后会返回一个值。
  • 存储函数的使用范围:
    • 存储函数返回的值可以在 SELECT UPDATE 等命令中和普通函数一样使用。

1、创建存储函数的基本语法:

# 创建存储过程的基本语法的使用:
create procedure functionName (params DataType) returns ReturnDataType
begin
	SQL语句
	return 返回值.表达式
end

1.1、如果发现使用不了存储函数的话,需要执行的操作:

存储函数有可能对复制(→ 11.5.3 节)和数据的恢复产生影响。因此,参数 log_bin_trust_function_creators 的初始值被设置为 0,这样就不能使用存储函数了 。要想使用存储函数,就需要执行下面的操作修改此设置:

SET GLOBAL log_bin_trust_function_creators=1

若想查看对应的变量的值,可以使用如下的指令来进行信息的查看:

show variables like "log_bin_trust_function_creators";

如果 log_bin_trust_function_creators 被设置成了 ON,就可以使用存储函数了。

我们发现对应的全局变量中的值已经发生了改变;root是默认的具有相关的创建存储函数的权限的。但是普通的用户需要赋值。不是默认具有的。

1.2、创建变量的方法:

declare 变量名 数据类型;

使用这样的方式,来创建一个变量。

并且,对应的赋值操作如下所示:

declare variableName DataType
select
	avg(*)
	into variableName
from
	tablename;

1.3、显示和展示函数:

对应的两个常使用的两个语句:

show create function FunctionName;
drop function FunctionName;

2、触发器

2.1、什么是触发器?:

触发器trigger)是一种对表执行某操作后会触发执行其他命令的机制

触发器就是针对某一个动作,而引发的一系列的操作;下面创建一个如下所示的触发器:

当一张表user中的数据被删除的时候,对应的被删除的记录将会被保存在另一张表user_remove中。

2.2、触发器的创建:

触发的时机有:

  • 在动作前,触发
  • 在动作后,触发

触发器监听的动作:

  • insert:只能在操作后提取数据。
  • update:什么时候都可以提取数据。
  • delete:只能在操作前,提取数据。

触发器的列值:

OLD. 列名对表进行处理之前的列值
NEW. 列名对表进行处理之后的列值

对应的触发器的创建的格式如下所示:

CREATE TRIGGER 触发器名 BEFORE(或者 AFTER) DELETE 等命令
ON 表名 FOR EACH ROW
BEGIN
 使用更新前(OLD. 列名)或者更新后(NEW. 列名)的处理
END

尝试来来进行对应的触发器的创建和使用:

select database();
create table user_insert like user;
show tables;
# 对应的输出为:
# user
# user_insert
# user_time
# 发现对应的 table 我们已经成功的创建;
desc user_insert;
delimiter //
create trigger trOne before insert 
	on old_tableName for each row
	begin 
		insert into new_table values (NEW.empid, NEW.age, NEW.month);
	end
//
delimiter ;

insert into old_tableName values(xxx,xxx,xxx);
# 查看检测的表格中的所有的内容。
select * from new_table;

对应的操作结果为:

A110,30,100
A109,33,50

我们,发现在触发器被创建完毕之后将会自动的使用。

2.3、触发器的删除和确认操作:

drop trigger triggerName;
show trigger triggerName;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值