【数据库】——触发器和存储过程

一、触发器gger

触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。

1、创建触发器

创建的语法如下:

create trigger  trigger_name
 trigger_time
 trigger_event 
 on table_name for each row 
 begin
 sql语句
end;

例如:

delimiter &&
create trigger tri_1
after 
insert 
on test
for each row 
begin
   set @count = @count + 1;
end;
&&

各个参数的含义:

  • trigger_name:触发时间,可以是before(检查约束前触发)或者after(检查约束后触发)
  • trigger_event :触发器的触发事件,可以是insert、updata或者delete.对同一个表相同触发时间的相同触发事件,只能定义一个触发器。所以一张表上最多只能定义6个触发器
  • triggrt_stmt:要去处理的一系列操作,可能不止一条SQL语句,不允许select操作执行

补充知识:结束符的修改
在mysql中,我们都知道用;来表示语句的结束,但是在触发器的创建过程中,我们可以看到,语句中就有;存在,那么怎么来避免冲突呢,我们采用了delimiter 的方式来修改结束符。
delimiter +任意符号即可。

2、删除触发器

一次可以删除一个处罚程序,如果没有指定的schema_name,默认为当前数据库具体语法如下:
drop trigger[schema_name] trigger_name

例如:要删除film表上的触发器ins_film
drop trigger ins_film;

3、查看数据库

(1)可以通过执行show triggers命令查看触发器的状态、语法等信息,但是这种方法每一都返回所有的触发器信息,使用起来不太方便。
在这里插入图片描述
(2)查询指定触发器的指定信息,查看方式是查询系统表的infromation_schema.tiggers表
在这里插入图片描述

4、哪些事件能触发触发器

insert类型:load(大批量的插入)、repalce
delete类型:delete
updata类型:updata
replace和insert的区别
如果出现主键重复, replace实现的替换操作,(delete和insert),其他情况相同

二、存储过程和函数

(1)含义
存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率有好处。

(2)优势
以将数据的处理放在数据库服务器上进行,避免将大量的结果集传输给客户端,减少数据的传输。

(3)区别
函数必须有返回值,而存储过程没有。存储过程的参数可以使用IN (输入型参数 值传递)OUT( 输出型参数 做数据输出) INOUT (输入输出型参数 引用处理类型)。而函数的参数只能是IN类型。

1、存储过程和函数的相关操作

需要首先确认用户是否具有相应的权限,例如:创建时需要create routine权限,修改或删除需要alter routine权限。
允许包含DDL语句,也允许在存储过程中执行提交(commit,即确认之前的修改)或者回滚(rollback,即放弃之前的修改),但是不允许执行load data infile语句

下面创建了一个新的过程film_in_stock;
在这里插入图片描述
该过程调用了函数inventory_in_stock(),并且这个过程有两个输入参数和一个输出参数。

2、删除存储过程或函数

一次只能删除一个存储过程或者函数,删除存储过程或函数需要有该过程或者函数的alter routine权限,具体语法如下:
drop {procedure | function} [if exists] sq_name
例如:
drop procedure film_in_stock;

3、查看存储过程或者函数

(1)查看存储过程或者函数的状态
例如:
show procedure status like’film_in_stock’
在这里插入图片描述
(2)查看存储过程或者函数的定义
在这里插入图片描述
(3)通过查看information_schema,Routines了解存储过程和函数信息
在这里插入图片描述

发布了62 篇原创文章 · 获赞 7 · 访问量 2553

猜你喜欢

转载自blog.csdn.net/qq_43412060/article/details/104951563