浅谈触发器和存储过程

去年初识SQL数据库的时候就接触了着两个概念,但是对于这两对兄弟从何而来,又有什么作用几乎一片空白。慢慢的经历了一次又一次的机房收费,跟他们打了一次又一次的照面,然后是最近敲牛腩新闻发布系统,牛腩老师恨不得所有的SQL语句都写成存储过程,所有稍复杂的多表操作都要用上触发器,才发现在与数据库打交道的岁月,他们应该也是宿命一样的存在---逃不掉,就好好谈谈。

WHAT:

触发器: 基本表在被修改的时候通过事件触发而执行的存储过程。(被动)

作用是保证了由主键和外键所不能保证的参照完整性和数据完整行。

存储过程: 一种数据库对象,将负责不同功能的语句分类封装好,以便反复调用。(主动)

WHY:

触发器:

1:实现比约束更复杂的数据的完整性

2:返回自定义的错误信息

3:实现多张表的连级修改

存储过程:

1:语句封装,可多次调用,just like 面向对象

2:执行速度更快(存储过程第一次执行便被分析优化)

3:保证数据安全(系统管理员可对存储过程进行权限限制)

Personal Understanding:

1:触发器是一个被动的执行过程,更像是一个保护机制,当我的某个数据库的某条数据被修改的时候我预先写好的触发器就这样被触发了,然后他就会通过主外键约束来对其他表的数据进行合理修改以满足整个数据的完整性。而存储过程却是一个十足的积极主动能手,主动把SQL语句分类封装,就像我们在机房收费的时候封装的方法,我写好了有类似的需求直接调用就可以了。

2:触发器和存储过程都是数据库这个层面上进行的操作和修改,可以说基本跟我们要实现的软件代码没半毛钱关系,这样也是符合分层思想的,而且有利于后期系统的维护和修改。如果哪个功能块需求变更我们可能只需要修改数据库里的存储过程或者触发器而不用打开大段的代码去修改SQL语句。

3:两者都从不同方面保护了数据,触发器可以保护数据的完整性,而存储过程则是通过权限管理维护数据的安全。

时间: 2024-10-10 21:02:05

浅谈触发器和存储过程的相关文章

浅谈数据库之存储过程

浅谈数据库之存储过程 什么是存储过程 如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样. 竟然他是方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储过程参数也有返回值. 存储过程的优点:    存储过程的能力大大增强了SQL语言的功能和灵活性. 可保证数据的安全性和完整性. 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全. 通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性. 在运行存储过程前,

浅谈触发器使用

个人重构时看有人登录时使用触发器,当时我是用存储过程+事务实现的,也没有进一步思考,表面理解触发器就是由一个事件触发另一个事件,存储过程也是封装了一组sql语句,再加上事务的一致性原则,也可以达到一个动作的完整性.现在牛腩中又涉及到这个东西,存在即合理,也填补一下学习中的空白,主要总结一下如何使用及和存储过程的不同. 一.建立: 1.   触发器是特殊的存储过程,只不过它的执行不是由程序调用,也不是手工启动,而是由事件来触发即Insert.Update.Delete这些动作,比如牛腩中删除新闻类

浅谈三层架构(2)

感受: 对于三层的学习,自己刚开始的感觉真的是一头雾水啊,当时真的出现了很烦躁的感觉,我想这种感觉的出现真的是很可怕的,就这样耽误了两天,在网上也搜寻者自己想要的资料,昨天四姐也好心给调试了一番,顿时把自己的大脑打通了,其实问题难不难,就在于能不能打开思路了! VB.NET的三层实现: 上篇文章主要是对于三层有了一个表面的理解,下面针对机房收费登陆界面来进行一下简单的理解: UI层主要就是表面的构建,多以需要使用windows窗体来完成,而其他BLL和DAL则不需要,之间建立一个类库则可以完成自

关系型数据库表结构设计规范-浅谈(转)

数据库表结构设计规范-浅谈,为啥是浅谈呢,因为主要的观点还是来自原微信公共账号的一篇文章,稍微加了一些自己的看法. 谁来进行数据库的设计? 肯定是具体的开发工程师来进行,开发同学的话,第一业务熟悉度比较高,第二结合OO和ORM的思想,能有比较好的运用关系型数据库的特性.如果是DBA同学的话,虽然对于数据库本身了解比较多,但是对于业务了解较少,很难有比较客观的设计.但是业务上线或者运行期间,需要DBA同学能够重度的加入进来,针对一些性能点和不合理的点进行优化,同事也可以在上线前,针对SQL进行re

PostgreSQL 优势,MySQL 数据库自身的特性并不十分丰富,触发器和存储过程的支持较弱,Greenplum、AWS 的 Redshift 等都是基于 PostgreSQL 开发的

PostgreSQL 优势 2016-10-20 21:36 686人阅读 评论(0) 收藏 举报  分类: MYSQL数据库(5)  PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),功能很强大.包括了可以说是目前世界上最丰富的数据类型的支持,比如 IP 类型和几何类型等等. 发现很多读者都问过这样一个问题:如果打算为项目选择一款免费.开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定.针对这个问题,我们采访到了即将在Postgres中国用户20

浅谈SQL注入风险 - 一个Login拿下Server

前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都能登录了.不能这么写!” “呦?小伙子这都知道了?那你说说看 啥是注入?注入只能拿来绕过登录么?” 好吧,竟然在老子面前装逼,看来不给你点儿颜色看看,你还真是不明白天有多高.. 于是乎..哈哈.大清早的,轻松在班里装了一手好逼.. 呵呵.不说了,下面我把那个项目重写一下发上来吧.演示一下注入有哪些危

浅谈SQL注入风险 - 一个Login拿下Server(转)

前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都能登录了.不能这么写!” “呦?小伙子这都知道了?那你说说看 啥是注入?注入只能拿来绕过登录么?” 好吧,竟然在老子面前装逼,看来不给你点儿颜色看看,你还真是不明白天有多高.. 于是乎..哈哈.大清早的,轻松在班里装了一手好逼.. 呵呵.不说了,下面我把那个项目重写一下发上来吧.演示一下注入有哪些危

并发浅谈-锁和Token的应用

并发 即在同一时刻内有多个完成同一任务的进程或线程在同时运行.并发一般发生在大流量集中访问如抢购或秒杀等业务场景中,它所带来的影响主要表现在以下两个方面:1:造成系统的负载压力过大.比如说mysql天生在处理大并发时表现的异常吃力,并发大时经常可以造成数据库挂掉.2:造成业务资源的竞争出现.比如说兑换一个激活码,并发下可能会出现两个人同时兑换到的同一个激活码. 从开发的经验来看,一般开发者在写程序逻辑时,绝大多数的情况下是没有考虑并发问题的:这其中有两个方面,一是与业务有关,二是与经验有关:其中

浅谈数据库设计

浅谈数据库设计 数据库设计的重要性:好的数据库设计有下面的一些作用: 1.首先充分体现系统的需求,数据库是为应用服务的,好的数据库设计应该首先能满足应用系统的业务需求,准确的表达数据间关系. 2.保证数据的准确性和一致性,通过主外键.非空.限制.唯一索引等保证数据的健壮. 3.提高数据的查询效率,通过合理表结构,安排物理存储分区.增加索引等方式,提高数据的读取速度,提高查询效率. 4.有好的扩展性,在必要时能根据需求扩展数据结构. 在系统设计中对数据库的设计应考虑哪些设计原则  数据库是整个软件