一:简单函数
create function fun1 (`my_uid` int) RETURNS varchar(32) CHARSET utf8
READS SQL DATA
BEGIN
#Routine body goes here...
DECLARE my_uname VARCHAR(32) DEFAULT '';
SELECT uname INTO my_uname FROM users WHERE uid=my_uid;
RETURN my_uname;
END
!](https://img-blog.csdnimg.cn/20191028163510379.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5MTA5ODA1,size_16,color_FFFFFF,t_70)
- 删除函数
drop function [if exists] sp_name
- 查看函数
//查看函数的状态
show function status like 'name'\G
//查看存储过程的定义
show create function name \G
//通过information_schema.Routines就可以获得存储过程的名称的信息
select * from routines where ROURINE_NAME='name' \G
二:触发器
CREATE TRIGGER tr_users_insert AFTER INSERT ON users
for each ROW
BEGIN
// add some code
END
1.创建触发器使用CREATE TRIGGER 触发器名
2.触发条件After,before
3.触发事件 insert,update,delete
4.对什么表触发 ON users
三:高级特性
- READS SQL DATA(只读)
只包含读的sql语句,说明只有读,没有更新,对复制精确性是安全的,可以放行。 - CONTAINS SQL(读,写)
- MODIFIES SQL DATA(只写)
- NO SQL
如果函数包含更新语句,指定为CONTAINS SQL,MODIFIES SQL DATA是不允许创建的,但是指定为NO SQL,READS SQL DATA才可以创建,复制才能进行。
这些特征值提供子程序使用数据的内在信息,这些特征值只提供给服务器,并没有特征值来约束过程实际使用数据的情况