当前位置:首页 > 工作总结 > 镝灯触发器_触发器技术在电子商务系统开发中的应用
 

镝灯触发器_触发器技术在电子商务系统开发中的应用

发布时间:2019-06-23 04:41:11 影响了:

  摘要: 在数据库系统的开发和应用过程中,数据完整性是衡量系统性能的重要标准之一。触发器作为数据库软件中的一个重要工具,能够在表中数据发生变化时,自动触发完成相关操作来保证数据的完整性。文章研究了在SQL Server环境下,如何通过设计合理的触发器,实现电子商务系统中数据的完整性。
  Abstract: In the development and application process of the database system, data integrity is one of the important standards to measure system performance. As an important tool in database software, triggers can ensure the integrity of data when the table changes. This article researches how to design reasonable trigger to realize the data integrity of e-commerce management system under the SQL Server environment.
  关键词: 触发器;电子商务;SQL
  Key words: triggers;electronic commerce;SQL
  中图分类号:TP39 文献标识码:A 文章编号:1006-4311(2012)25-0181-02
  0 引言
  在互联网经济环境下,电子商务已经成为社会经济最具活力的有机组成部分,越来越多的上市企业、商家加入电子商务领域。2012年3月,在工业和信息化部发布的《电子商务“十二五”规划》中,指出电子商务是“企业降低成本、提高效率、拓展市场和创新经营模式的有效手段”。
  在电子商务系统的开发过程中,保证数据库中数据的完整性和安全性是一项非常重要的任务。在当今电子商务系统普遍使用的关系数据库中,普通的CHECK约束等能够实现一些基本的数据完整性,而对于一些复杂的完整性操作,使用触发器是最佳的选择[1]。本文以电子商务系统WebShop为例,研究了在SQL Server 2005环境下,如何通过触发器技术实现数据库中数据的完整性。
  1 触发器概述
  触发器是一种特殊类型的存储过程,它在指定的表中数据发生变化时自动生效[2]。触发器在调用时自动执行
  INSERT、UPDATE、DELETE和SELECT语句,实现表间的数据完整性和复杂的业务规则。
  触发器主要有如下优点:强化约束,实现比CHECK约束所定义的更为复杂的约束;跟踪变化,限制不允许数据库中未经许可的指定更新和变化;级联运行,通过侦测数据库内的操作,自动的级联影响整个数据库的相关内容。
  在SQL Server2005中,根据触发事件不同分为DML触发器和DDL触发器两类。
  1.1 DML触发器
  DML触发器是当数据库服务器中发生数据操作语言(DML)事件时要执行的操作[3]。DML触发器用于在数据库修改时强制执行业务规则。根据触发器语句执行的时机,DML触发器分为ALTER触发器和INSTEAD OF触发器。AFTER触发器先执行INSERT、UPDATE或DELETE操作,之后执行触发器语句;INSTEAD OF触发器在INSERT、UPDATE或DELETE语句运行时使用触发器语句代替。
  1.2 DDL触发器
  DDL触发器是SQL Server2005的新增功能,当数据库服务器中发生数据定义语言(DDL)事件时自动执行该触发器,一般用于数据库中的执行管理任务。与DML触发器不同的是,DDL触发器不会由表或视图的UPDATE、INSERT、和DELETE语句激发,而是由CREATE、ALTER和DROP等DDL语句激发。
  2 触发器在电子商务系统开发中的应用
  下面以电子商务系统WebShop为例,研究触发器在保证数据的完整性、级联操作等方面的应用。
  WebShop数据库主要包含以下表:商品表(Goods)、客户表(Customers)、订单表(Orders)、支付表(Payment)、员工表(Employee)。本例中主要涉及的商品表、订单表结构如表1、表2所示(只包含主要字段):
  2.1 用触发器保证数据的完整性 应用1:在电子商务系统数据库WebShop中,实现生成订单,即往订单表(Orders)中即插入订单记录时,进行如下数据完整性检查:如果插入的订单中的商品的商品号g_ID不存在或者下达订单的会员号c_ID不存在,必须取消订单插入操作,并返回一条错误信息。
  分析:此应用涉及多个表中的字段,使用普通约束无法实现。因此,在订单表(Orders)中创建触发器,获取新订单中的商品编号和会员编号,并和商品表和客户信息表中的相关字段进行对比,若新订单中的商品编号或会员编号在被参照表中不存在,则通过一个事务回滚(ROLLBACK TRANSACTION)撤销插入,并给出错误信息。
  创建触发器代码如下:
  CREATE TRIGGER tr_addorder ON Orders FOR INSERT,UPDATE
  AS
  DECLARE @g_no CHAR(6) --商品编号
  --获取新订单的商品编号
  SELECT @g_no=Goods.g_ID
  FROM Goods,inserted
  WHERE Goods.g_ID=inserted.g_ID

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3