后台数据库优化——板机

为了保证数据库的完整性和一致性。非常多的时候须要运行多条sql语句才干达到想要的目的。

在一对多的数据库关系中,比方卡号类别与卡号之间的关系。假设要取消某个类别的时候,就要连同齐下的全部卡号都删除。

在现实中。注冊的时候一般都会进行充值,当我想card表里面写东西的时候,就要向recharge表里面写一条充值记录。

完毕这两个操作才算完毕这个功能的实现.

对于以上的需求。每一个功能的实现
都伴随着多条sql语句的运行。

为了解决上面的问题,一共同拥有两种解决方法。一是存储过程。二是触发器。上篇博客中已经解说了存储过程。那么这篇博客当然要来具体解释一下触发器了。

触发器:当发生某个操作之后进行的一系列操作。

数据库中除了查询之外
就仅仅有增删改三种操作了。所以触发器就分为三类:insert、delete、update三种触发器。

以下来看一下实例:

这是我创建的数据库两张表:(T_card和T_type,而且两张表设置了主键和外键约束)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemM0NzQyMzU5MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

以下是我运行删除‘暂时用户’所运行的结果。

(这是由于外键约束造成的错误)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemM0NzQyMzU5MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

之后我再创建delete触发器。看一下能否够实现目的。

CREATE TRIGGER delType
   ON  T_type
   AFTER delete
AS
BEGIN
	declare @typeId int
	delete T_card where typeid in (select typeid from deleted) --从已经删除的表中 取出typeId
END
GO

运行结果与上述错误同样。

在来看一下sql
server中创建触发器的定义模版:

大家注意到alter了没有,insert
delete update这三种触发器都是在完毕操作之后再
运行之后的一系列sql语句。

假设这触发器的条件运行出错。那么后面的操作就都没有办法运行了。

因此。大家正在想。

假设我先删除
‘暂时用户’的卡号,在来删除卡号类别,这样错误不就没有了吗。

要找一系列操作来替代delete方法。

alter TRIGGER delType
   ON  T_type
   instead of delete
AS
BEGIN
	declare @typeId int
	select @typeId=typeid from deleted --从打算删除的表中 取出typeId :还没有删除
	delete T_card where typeid in (select typeid from deleted)   --先删除卡类别相应的卡号
	delete T_type where <a target=_blank href="mailto:[email protected]		">[email protected]		</a>--在删除卡号类别
END
GO

之后再运行sql语句看效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemM0NzQyMzU5MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemM0NzQyMzU5MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

达到了想要的效果。在删除了暂时用户这个类别和暂时用户的卡号。

能够使用触发器的需求:当对某张表进行增删改等操作的时候,须要对其它表进行一系列的操作。

使用触发器,能够保证数据库的完整性。存储过程和触发器的编写。能够降低程序的代码,降低难度。

同一时候也是为了降低反复代码。对于一个系统来说,假设没有使用触发器和存储过程等方法。

那么代码的编写,反复量将是非常可怕的。相反,假设设计好数据库。写好存储过程和触发器等。

在来看这个系统。那真是简单多了。

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-08-22 01:36:31

后台数据库优化——板机的相关文章

公交车路线查询系统后台数据库设计--换乘算法改进与优化

在<查询算法>一文中已经实现了换乘算法,但是,使用存储过程InquiryT2查询从“东圃镇”到“车陂路口”的乘车路线时,发现居然用了5分钟才查找出结果,这样的效率显然不适合实际应用.因此,有必要对原有的换乘算法进行优化和改进.在本文中,将给出一种改进的换乘算法,相比原有的算法,改进后的算法功能更强,效率更优. 1. “压缩”RouteT0 假设RouteT0有以下几行 如下图所示,当查询S1到S4的二次换乘路线时,将会产生3×2×4=24个结果 从图中可以看出,第1段路线中的3条线路的起点和站

数据库优化举例详解

数据库优化举例详解 林涛 发表于:2016-3-16 1:01 分类:XSQL/程序/等 标签:mysql,mysql优化 112次 数据库是所有架构中不可缺少的一环,一旦数据库出现性能问题,那对整个系统都会来带灾难性的后果.并且数据库一旦出现问题,由于数据库天生有状态(分主从)带数据(一般还不小),所以出问题之后的恢复时间一般不太可控,所以,对数据库的优化是需要我们花费很多精力去做的. 硬件层优化 这一层最简单,最近几年相信大家对SSD这个名词并不陌生,其超高的IOPS在刚出现在大家视野中的时

单机数据库优化的一些实践(mysql)

数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表.另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题.本文试图描述单机数据库优化的一些实践,数据库基于mysql,如有不合理的地方,欢迎指正. 1.表结构优化 在开始做一个应用的时候,数据库的表结构设计往往会影响应用后期的性能,特别是用户量上来了以后的性能.因此,表结构优化是一个很重要的步骤.

中国移动MySQL数据库优化最佳实践

原创 2016-08-12 章颖 DBAplus社群 本文根据DBAplus社群第69期线上分享整理而成,文末还有书送哦~ 讲师介绍章颖 数据研发工程师 现任中国移动杭州研发中心数据研发工程师,擅长MySQL故障诊断,性能调优,MySQL高可用技术,曾任中国电信综合平台开发运营中心DBA 开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则需要从数据

单机数据库优化

数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表.另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题.本文试图描述单机数据库优化的一些实践,数据库基于mysql,如有不合理的地方,欢迎指正. 1.表结构优化 在开始做一个应用的时候,数据库的表结构设计往往会影响应用后期的性能,特别是用户量上来了以后的性能.因此,表结构优化是一个很重要的步骤.

(转)大数据量高并发的数据库优化与sql优化

大数据量高并发的数据库优化 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程. 所以在考虑整

wordpress 如何从后台数据库修改theme(图文教程)

我们在wordpress主题theme配置的时候,会从网站上下载比较流行的theme,使自己的blog看着很酷,也有不顺利的时候,你下载的theme有bug或者下载包出问题了,安装过后你的web页面不能在访问了;我们只能够通过后台数据库来手动修改theme了 我们在wordpress主题theme配置的时候,会从网站上下载比较流行的theme,使自己的blog看着很酷.也有不顺利的时候,你下载的theme有bug或者下载包出问题了,安装过后你的web页面不能在访问了.悲催,想通过web将them

单机数据库优化的一些实践

本文由码农网 – 吴极心原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表.另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题.本文试图描述单机数据库优化的一些实践,数据库基于mysql,如有不合理的地方,欢迎指正. 1.表结构优化 在开始做一个应用的时候,数据库的表结构设计往往会影

【转】MySQL数据库优化总结

==============推荐============ 博客园:http://www.cnblogs.com/villion/archive/2009/07/23/1893765.html MySQL数据库优化总结 对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要.一般来说,要保证数据库的效率,要做好以下四个方面的工作:数据库设计.sql语句优化.数据库参数配置.恰当的硬件资源和操作系统,这个顺序也表现了这四个工作对性能影响的大小.下面我们逐个阐明: