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

存储过程

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

为什么使用存储过程?
1.存储过程与其他应用程序共享应用程序逻辑,因而确保了数据访问和修改的一致性
2.存储过程具有安全性和所有权链接,以及可以附加到他们的证书
3.存储过程提供了安全机制
4.存储过程允许模块化程序设计
5.存储过程可以减少网络通信流量

种类:
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]

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

删除存储过程
语法格式:

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层

发布了38 篇原创文章 · 获赞 8 · 访问量 3812

猜你喜欢

转载自blog.csdn.net/dingmengwei/article/details/93059693