数据库视频---存储过程和触发器

存储过程

概述:
一组将来完成特定功能的SQL语句集,经编译后存储在数据库中。能够包含程序流,逻辑,以及对数据库的查询。能够接受参数,输出参数,返回单个或者多个结果集以及返回值。web

为何使用存储过程?
1.存储过程与其余应用程序共享应用程序逻辑,于是确保了数据访问和修改的一致性
2.存储过程具备安全性和全部权连接,以及能够附加到他们的证书
3.存储过程提供了安全机制
4.存储过程容许模块化程序设计
5.存储过程能够减小网络通讯流量sql

种类:
1.用户自定义存储过程
2.系统存储过程
3.扩展存储过程数据库

建立存储过程安全

CREATE PROC[EDURE]procedure_name[;number]
[{@parameter data_type}
[VARYING][=default][OUTPUT]][,...n]
[WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
AS
sql_statement[...n]

使用OUTPUT参数,是一个输出参数
ENCRYPTION对文本进行加密网络

修改存储过程架构

Alter PROC[EDURE]procedure_name[;number]
[{@parameter data_type}
[VARYING][=default][OUTPUT]][,...n]
[WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FOR REPLICATION]
AS
sql_statement[...n]

关键词是修改存储过程,后边添加存储名称svg

删除存储过程
语法格式:模块化

DROP PROCEDURE{procedure}[,...n]

规则
不能建立角色,不能建立默认值,不能建立架构,不能建立或修改触发器,不能建立或修改视图。。测试

存储过程:
1.系统自带存储过程
2.用户自定义存储过程加密

在代表前加井号#
单井号#局部临时存储过程
双井号##全局临时存储过程

触发器

触发器:
特殊的存储过程,是一个在修改制定表中的数据执行时执行的存储过程。一般经过事件进行触发。存储过程能够经过存储过程名字而被调动

优势:
1.自动执行,在表的数据做了任何修改以后当即激活
2.能够经过数据库中的相关表进行层叠更改
3.能够强制限制数据的完整性。。与CHECK约束不一样时能够引用其余表中的列

种类:
1.DDL触发器
能够防止对数据库架构的修改
对数据表进行删除
记录数据库架构中的更改或者事件
2.DML触发器
能够查询其余表中的数据,而且能够进行,更改,删除,新增灯操做。
建立INSERT触发器
选择INSERT

CREAT TRIGGER trigger_name    '建立触发器声明关键字
ON {table|view}
{
    {{FOR|AFTER|INSTEAD OF}
     {[DELECT][,][INSERT][,][YPDATE]}
     AS
     sql_statement    '操做语句
    }
}

建立DELETE触发器
{语法格式同上}选择DELETE

建立DDL触发器

CREATE TRIGGER trigger_name
ON{ALL SERVER|DATABASE}
WITH ENCRYPTION
{FOR|AFTER|{event_type}
 AS
 sql_statement

递归触发器
任何触发器均可以包含影响同一个表或者另外一个表的UPDATE,INSERT或DELETE语句。若是启用递归触发器选项,那么改变表中数据的触发器,经过递归执行就能够再次出发本身。再数据库建立时,默认状况下递归触发器选项是禁用的,单可使用ALTER DATABASE语句来启用它。

注意事项: 1.很复杂,必须通过有条理的设计和全面的测试 2.在任意点的数据修改会触发一系列触发器 3.全部触发器一块儿构成一个大事务 4.触发器最多只能递归16层