MySQL(存储过程触发器)

1.存储过程分为两种:函数和过程,使用call命令来调用过程,函数可以嵌套在一条sql语句中,过程接受参数,函数有返回值。

2.定义一个存储过程中的函数:


delimiter $$把mysql客户端命令解析器的结束符号‘;’分号转换成$$符号,因为在mysql客户端程序中每条命令的结束是以分号结束的,但是存储过程中的函数结束也是使用的分号,为了在mysql client中逐条编写存储过程,需要将解释器的命令定义为分号以外的其他字符。founction shorten有两个参数,isnull()判断出入的字符串是否为空,left将字符串长度从左开始截取为长度n,concat将多个字符串连接成一个字符串。

执行存储过程:select name,shorten(name,3) from my_student;


创建存储函数:create function functionname(parameterlist) return datatype [options] sqlcode;存储过程:create procedure   functionname(parameterlist)  [options] sqlcode;函数有返回值而过程没有返回值。

删除sp(存储过程或函数):drop function|procedure [if exists] name;if exists是可选项,即如果存在就删除。

查看sp:show function status;

查看sp的代码:show create function name;

调用sp过程:call database.spname();

对局部变量进行赋值:set var1=value;select var:=value;select count(*) from student into var;select 2*7 into var;select name,id from my_student where id=1 into @myname,@myid;

3.触发器:

创建触发器的命令:

create trigger name before|after update|insert|delete on tablename for each row code;

old.column:返回update和delete在被修改之前的内容。

new.column:返回insert和update在被修改之后的内容。

删除触发器:drop [databasename.]triggername;

一个触发器例子:

create trigger trigger_befor_insert before insert on my_student for each row begin if new.percent<0 or new.percent>1 then set new.percent=0.7;end if;end$$

在此后你没插入一条数据都会检查percent字段的值,如果不符合范围将把他设置成0.7;

在插入一条数据时将auto_increment字段id设置为了一个比较的值。通过下面命令查看当前的auto_increment的值。

select auto_increment from information_schema.tables where table.schema='数据库名' and talbe.name='表名';

通过下面语句修改auto_increment 的值:

alter table tablename auto_increment=number;这里要注意修改的值只能比当前的auto_increment的值大,否则会失败。


    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值