IT行业资讯

当前位置: 首页/新闻•资讯/IT行业资讯/正文

数据库中的触发器

发布时间:2013-5-2 来源:小编

为什么需要触发器(TRIGGER)呢?典型的应用就是银行的取款机系统。假定该系统的数据库设计需要两张表:帐户信息表(bank)存放帐户的信息,交易信息表(transInfo)存放每次的交易信息。上述结果有什么错误?您一定发现了,当张三取钱200元时,虽然交易信息表(transInfo)中保存了取钱200元的交易信息,但帐户表(bank)中的余额仍是1000,没有自动跟随修改。显然,我们应该根据交易类型是“支取”还是“存入”,自动减少或增加帐户表中的余额。而且,它还应该具有事务的特征:一旦交易失败,余额修改也应该自动取消 。那么,如何解决呢?这种特殊的业务规则使用普通约束行吗 ?答案显然是否定的 。使用事务行吗?事务能保证一旦交易失败,余额修改也自动取消。但实现不了自动修改的触发功能 。所以,最优的解决方案就是采用触发器。触发器它是一种特殊的存储过程,并且也具有事务的功能,它能在多表之间执行特殊的业务规则或保持复杂的数据逻辑关系 。

什么是触发器,再看一个例子:目前有两张表,分别存放在职员工和退休员工的信息。假定现赵二退休:赵二将从员工表中删除。一旦删除赵二的信息,应自动触发一个动作:将赵二的信息保存到退休员工表中。强调:自动触发,而不是手动,如何实现呢,当然是使用触发器。触发器是在对表进行插入、更新或删除操作时自动执行的存储过程触发器通常用于强制业务规则触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束可执行复杂的SQL语句(if/while/case)可引用其它表中的列触发器定义在特定的表上,与表相关自动触发执行,不像存储过程,不需要也不能人工调用执行,本身就是一个事务,所以,如果发现有错误,可以回滚撤销操作。

触发器的类型

INSERT触发器:当向表中插入数据时触发,自动执行触发器所定义的SQL语句。

UPDATE触发器:当更新表中某列多列时触发,自动执行触发器所定义的SQL语句。

DELETE触发器:当删除表中记录时触发,自动执行触发器所定义的SQL语句。

公司简介 - 案例展示 - 联系我们

我们为您提供:软件定制、软件开发、网站建设、IT 外包、系统集成、品牌策划、合肥软件开发等服务
地址:合肥市 高新区 天智路5号 同创科技园5号楼4层   电话:0551-65355812   传真:0551-65355811
版权所有:安徽凯美耐信息技术有限公司    皖ICP备14000533号-1     皖公网安备 34019202000960号