数据库触发器(Trigger)的一点使用心得_数据库其它

(1) 针对较为复杂的跨多表的数据业务级别的约束,可以通过触发器来替代大量的后台判断代码,效率较高且便捷。
(2) 如果想通过触发器辅助业务逻辑,不能单着眼于数据库内容的变化来设计触发器,还必须紧密结合业务模型中涉及该表的所有地方,因为很有可能因为不一致的逻辑处理方式导致我们设计的触发器遗漏下一些分支条件!其实,在这种情况下,如果能有更好的方法,不建议使用触发器,因为牵扯到过多的业务逻辑内容的话,会使触发器的设计和编写困难重重,不能充分发挥其便捷高效的优点。
(3) 鉴于触发器在实际运行的时候,是被包含在一个数据库事务中的,所以我们在编写了完整的处理分支后,就可以完全信赖它的执行,大量并发情况下,数据库会自动处理好对各事务的操作,不用担心触发器的性能和正确性。
(4) 在同一个事务中的不同执行语句,如果后面语句中的操作触发了相应表的触发器,则在触发器内可以查看前面语句执行后的结果列表的内容,所以,在使用触发器的时候,对事物中多条语句的操作的顺序是要考虑清楚的。
(5) 如果我们使用触发器+数据表的形式来对数据进行一些统计性的操作的时候,我们在保证触发器逻辑完整性的前提下,最好能通过数据库任务的方式来定时进行检查,因为触发器对于一个用程序的操作都能有相应的处理,但对于人为的数据库操作有时却是无能为力的,所以,为了避免这样的错误发生,有必要对统计结果做定期的校验,保证数据的正确性,当然,如果可以,尽量不要使用这种方法,但在一些个性化项目中,因为一些特别的原因,可能会有所应用。
(6) 我们可以间接地通过更新数据表的方式来调试触发器,当然,也可以通过在触发器中添加一些“特殊的日志性质的更新语句”来辅助我们的调试。

最后再说一句,所谓“好钢用在刀刃上”,触发器在一些特殊的应用情况下,会极大地简化我们的开发工作量,并提升处理效率,但是它并使万能的,也不是适用于各种应用环境,所以我们使用的时候,一定要慎重,更要权衡利弊。

时间: 2024-09-20 01:58:48

数据库触发器(Trigger)的一点使用心得_数据库其它的相关文章

大数据时代的数据库选择:SQL还是NoSQL?_数据库其它

一.专家简介VoltDB公司首席技术官Ryan Betts表示,SQL已经赢得了大型企业的广泛部署,大数据是它可以支持的另一个领域.Couchbase公司首席执行官Bob Wiederhold表示,NoSQL是可行的选择,并且从很多方面来看,它是大数据的最佳选择,特别是涉及到可扩展性时.二.SQL经历时间的考验,并仍然在蓬勃发展结构化查询语言(SQL)是经过时间考验的胜利者,它已经主宰了几十年,目前大数据公司和组织(例如谷歌.Facebook.Cloudera和Apache)正在积极投资于SQL

什么是数据库索引 有哪些类型和特点_数据库其它

有效优化VPS性能,提高VPS服务器运行速度,除了合理配置WEB服务器外,更多的是需要我们能够很好的优化网站程序及网站数据库,网站数据库的优化最为基础的优化措施就是建立数据库索引了,这里就介绍一下,什么是数据库索引?有哪些类型和特点? ⑴,什么是数据库索引? 数据库索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.在数据库中,索引的含义与日常意义上的"索引"一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象. ①

sqlserver和oracle中对datetime进行条件查询的一点区别小结_数据库其它

首先,看一下sql server,之前我们都通过前台用户选择一个起始时间和一个结束时间(以日为最小单位),然后来作为条件进行查询,如果直接通过"between starttime and endtime"来作为条件的话,发现会自动将"2009-06-17"转化为" 2009-06-17 00:00:00",于是如下查询条件" between '2009-06-16' and '2009-06-17'",只能得到16日的数据,1

SQLServer 2005 和Oracle 语法的一点差异小结_数据库其它

1.获取系统当前时间 SQL Server 2005: select getdate() Oracle: select sysdate from dual 2.获取年月日 SQL Server 2005: 复制代码 代码如下: select year(getdate()) --2011 select month(getdate()) --3 select day(getdate()) --23 Oracle: 复制代码 代码如下: select to_char(sysdate,'yyyy') f

当数据库变慢时的解决方法_数据库其它

第一章 检查系统的状态 1.1 使用sar来检查操作系统是否存在IO问题 1.2 关注内存vmstat 1.3 找到使用资源特别大的Oracle的session及其执行的语句 1.4 查找前十条性能差的sql语句 第二章 检查会话状态 当数据库变慢时,我们应如何入手 当应用管理员通告现在应用很慢.数据库很慢时,当Oracle DBA在数据库上做几个示例的Select也发现同样的问题时,有些时侯就会无从下手,因为DBA认为数据库的各种命种率都是满足Oracle文档的建议.实际上如今的优化己经向优化

数据库的ACID特性术语详解_数据库其它

ACID就是:原子性(Atomicity ).一致性( Consistency ).隔离性( Isolation)和持久性(Durabilily). 1. 原子性 原子性属性用于标识事务是否完全地完成,一个事务的任何更新要在系统上完全完成,如果由于某种原因出错,事务不能完成它的全部任务,系统将返回到事务开始前的状态. 让我们再看一下银行转帐的例子.如果在转帐的过程中出现错误,整个事务将会回滚.只有当事务中的所有部分都成功执行了,才将事务写入磁盘并使变化永久化. 为了提供回滚或者撤消未提交的变化的

数据库查询排除重复记录的方法_数据库其它

今天由于工作需要,需要在数据库中找出某一字段下不同的记录值,很简单的问题被我想的太复杂,很是郁闷,原因是SQL的一条命令忘了,现问题已解决,赶快拿来做备忘. 其实这里只需要用到SQL中的DISTINCT命令即可,非常简单,语法如下: 复制代码 代码如下: SELECT DISTINCT 列名称 FROM 表名称 举例说明: 假设现有一个数据库表:htmer: 复制代码 代码如下: field001 记录1 记录2 记录1 记录3 现在这张表中有四条记录,但有一条记录是重复的,如果我要去掉该重复记

Sybase数据库sa密码丢失后解决方法_数据库其它

1.在Sybase目录的install子目录的启动server文件  RUN_server(这里的server表示你的服务器名称,如这里我的是RUN_FENGLB)名,编辑该文件,  在其中的"\data\master.dat -sFENGLB"后加入参数 -psa,保存该文件.  2.如果服务器已经启动,先停止之.  3.启动一个DOS窗口,转到上面的install目录,将DOS窗口的属性的屏幕缓冲区大小设置为9999,将执行第1步批处理文件以启动server,在启动之后,将DOS窗

SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例_数据库其它

--查询建立时间 --表 select * from sysobjects where id=object_id(N'表名') and xtype='U' --表的结构 select * from syscolumns where id=object_id(N'表名') --存储过程 select * from sysobjects where id=object_id(N'dqtx') and xtype='P' --查询最后修改时间 --存储过程 select name,modify_dat