MySQL(存储过程触发器)

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

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

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;函数有返回值而过程没有返回值。.net

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

查看sp:show function status;orm

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

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

对局部变量进行赋值: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的值大,不然会失败。

相关文章
相关标签/搜索