存储过程 |
概述:
一组将来完成特定功能的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层