1、电子商务软件后台数据库数据统计的实现剧叩唱中 A;凡 f;叽 ; 回血 nmFwaa命白 nmw 川 aEEn人叫由;?汉灿凶仙画画阳唰 u俐 ; 日刚刚血;凶画画协恤曲,.,川灿创 V?aWEW.mamhmEWURM-ma-A.E 晶目凰;哩,附 ,-aF, ,用 M?用文/ 壮志剑宋建民 1.1盲农 Is 农部分结构在数据库应用系统中,数据统计是重要的工作之一.字段各类型奋又事现 chal(lO) 字号通常数据统计可以通过编写相应的应用程序实现 .但是,class chal(20) 班级一方面数据统计的工作量一般非常庞大,另一方面当数据 S)WlI. ch (8) 姓名库中的原始数据量较大
2、时,利用应用程序进行统计将是非 sex ch (2) 1生别常能时的,甚至从时间的角度上是不实现的.此时,利用数. . . 据库系统的触发器技术可以有敢地解决上述问题。因为触统计表(时为学生人数统计信息表,部分结构如表2.发器的执行是在对数据库中数据进行编辑后自动执行,所. .f. 2 n.f.部分结构以要处理的数据很少,速度也就相当快了.下面从触发器宇段名类型含义以及利用触发器实现数据统计两方面加以讨论。class clw(20) 班级 2.触发器概述 num 总人数趴 tman 男生人数在关系型数据库管理系统(RDBMS)中,触发器是存 mt 啊。man 女生人数趴 1储在服务器上的一组预
3、先定义并编泽好的用来实现某种. . . 特定功能的 SQL语句.触发器是建立在表上的,当对表进行编辐操作时由数据库管理系统 (DBMS)自动执行.一般inse 此触发器对表的编辑操作通常包括插入.删除、修改,所以触发器也代码:分为插入、删除、修改三种触发器 .CREA TE TRIGGER sJnsert ON s 由于触发器是依附于表的,所以只能在表上创建触发 FOR INSERT 器.当对某个表进行插入或删除或修改操作时,如果该表 AS 上有插入或删除或修改触发器,则 DBMS将自动执行插 begin 入或删除或修改触发器.declare class char(20),sex char(2
4、) 3.触发器执行原理 select class=class,sex=sex from inse口创.下面以 SQLServer 2000为例,介绍触发器的执行原 if not exists (sele立 classfrom n where 理(其余的 RDBMS与此类似)。在 SQLServer 2000中,class=c!ass) 共有三种触发器,INSERT(插入)、DELETE(删除)、UP?mse 付 inton(c!ass,n 山 n)values (class,O) DATE(修改)触发器.江seX=1 男INSERT 触发器的执行原理update n set num=num+
5、1, man=isn凶(man,O)+l 当对表插入记录时,INSERT触发器将执行.首先将 where class=class 插入的记最放入表 inserted中,该表是与原表结构相同的 else 逻辑茬,保存插入的记录,然后执行触发器指定的操作.update n set n 山 n=n山 n+1, woman=isnull (wom-DELETE 触发器的执行原理 an,O)+1 where class=class 当对表删除记录时,DELETE 触发器将执行。首先将 end 删除的记录放入表 deleted中,该表是与原表结构相同的delete 触发器与 update触发器逻辑表,保存
6、删除的记录,然后执行触发器指定的操作.代码:(略) UPDATE 触发器的执行原理 5.结京语由于对表修改记录的操作实际是先删除旧记录然后以上介绍的是大型数据库数据统计的一种切实可行再插入新记录,所以执行 UPDATE触发器相当于先执行的实现方案,对于数据库数据量可能非常庞大时,应该是 DELETE触发器然后再执行 lNSERT触发器。惟一的选择方案。需要说明的是,该方案不仅适合于新系 4.实例统的设计,同样适合于旧系统的改造,以上的实例实际就表结构是取自于旧系统的改造作者单位 z西安航空技术高等专学生表 为学生基本情况登记表,部分结构如表 1.科学校计算凯系)集团经济研究友 Xl710月申旬刊(总第 245期)?332 ?卥?舍捬?溱湕? 睉?呒?晲楮楦汤数?物睨渨?异獥牬敬湵慩敮?狯?扥捬?玱獥?牶悭?琅溣?低潭獥楳敬晲敲摡?呅?啐?憡?楮?摥慲捬?沣洽?湳卅?杩悭敲?湡牴瑥?汥?呅?牴瑳散潭瑥? 卅?呅?十?獥?捬?猽悭数?湵?汥? 敲剔?捴?敤?卑? 剔?呅?牴慲?玣?洫?瑥? 敀污?汵? 污?卑?捬?獳汵?洫?獳?悭数泄沣潭?痴?虑?污? 楮?摥?汵虑?异?獳?卅?獥?汥?敳?獮摡?剔?狮牴?瑥?猧畲?剔敤呅擖?啐?捬湵氨?数? 卅?悭汬睯?呅剔?玣?洭?数?兑?虑?猩?伩?呅?啐?