文章目录
一、触发器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了解存储过程和函数信息