学斋随笔,初九潜龙勿用,-30触发器,存储函数,存储过程
关于触发器,在mysql中,触发器是一种机制,就像一个闹钟,事先预定好义好一段代码,该段代码无需人工调用,而是会在预定好的某个情况下自动执行。
通常有6种情况,对某个数据表的增(或删或改)之前(或之后)。
触发器内部也跟存储过程或存储函数一样,属于“编程环境”。
不能返回数据。
也不能有select语句。
也没有参数,也不能调用,而是在触发的情况下自动调用(执行)。
触发器的定义形式:
create trigger 触发器名字 before(或after) insert(或update或delete) on 表名 for each row begin
要执行的代码,语句块,编程环境,但不能使用select语句。
end;
在触发器内部,其中有两个关键字具有特定含义和数据获取作用:
new:代表新插入的一条数据,在insert事件的时候有效。
old:代表旧的一条数据,在update或delete的时候有效。
存储函数
跟系统函数的调用形式一样,直接使用名字,并带括号,以及根据需要带实参。
栗子:
select 3, now(), f1(); //f1为自定义的存储函数。
select 3, now(), f2(3, ‘abc’, @v1); //带3个实参,其中@v1是一个前面赋值了的变量。
需要返回一个数据值;
不能有select语句;
调用时直接当作一个“数据”来使用,即可以用于select或别的各种数据操作语句中。
存储过程
存储过程就是一个没有返回值数据值的“函数”。
虽然存储过程不返回单个数据值,但可以“返回”结果集——这里的返回起始就是select语句的正常结果表现。
存储过程调用形式:call 存储过程名(实参1,实参2,.....);
存储过程调用形式:

浙公网安备 33010602011771号