APP下载

SQL Server中多行数据更新的触发器应用研究

2010-09-05邓景顺

关键词:山西大同中总触发器

邓景顺,黄 杰

(山西大同大学数学与计算机科学学院,山西大同 037009)

SQL Server中多行数据更新的触发器应用研究

邓景顺,黄 杰

(山西大同大学数学与计算机科学学院,山西大同 037009)

触发器是一种特殊的存储元件,它可以方便地基于一个表的数据更新,自动更新其他相关表的记录,以保证数据的完整性.文章通过开发实例,阐述SQL Server中多行数据更新的触发器处理方法.

SQL Server 多行数据更新 触发器

1 问题的提出

数据更新操作有三种:向数据表中添加记录、修改记录、删除记录.在SQL Server触发器应用中,大家对由一个记录更新操作激活的触发器讨论较多,而对一次更新操纵多个记录陈述较少.本文重点在于,使用SQL Server 2005中的DML触发器[1],阐述多行数据更新的触发器处理方法.

本文使用的数据库其中数据表及结构为:

学生表:XSB(学号,姓名,专业,总学分,…)

课程表:KCB(课程号,课程名,专业,学分,…)

成绩表:CJB(学号,课程号,成绩)

其中XSB中总学分,应为学生所选成绩合格(>=60分)的课程,对应的学分之和.

多行数据的更新举例:

INSERT INTO XSB SELECT*FROM XSB1.

DELETE FROM XSBWHERE学号<'050001'.

UPDATE CJB SET成绩=成绩+10WHERE课程号='206'.

类似这些操作都会引起数据表中一行或多行记录的更新操作.由这些操作引发的触发器设计要比一个记录时的情况复杂.

2 触发器工作原理

触发器是一个被指定关联到一个表的数据对象,触发器是不需要调用的,当对一个表的特别事件出现时(如INSERT、UPDATE、DELETE等),它就被激活[2].

SQL Server 2005中,按照触发事件的不同可经将触发器分为两大类:DML触发器和DDL触发器.当DML触发器被执行时,系统创建了两个特殊的逻辑表:inserted表和deleted表:

inserted表:当向表中插入数据时,INSERT触发器触发执行,新的记录插入到触发器表和inserted表中.

deleted表:用于保存已从表中删除的记录,当触发一个DELETE触发器时,被删除的记录存放到deleted表中.

修改一条记录等于插入一条新记录,同时删除旧记录.当对定义了UPDATE触发器的表记录修改时,表中原记录移到deleted表,修改过的记录插入到inserted表及被修改的表中.

这两个表总是与被触发的表有相同的结构,存储在系统内存中,不允许用户对其修改,但用户可以引用表中数据,当触发器完成工作时,二表也被系统删除[3,4].

在本文下面的方法中,都用到以上二个系统表.此外还会用到自定义的临时表,用后需删除.

3 触发器应用方法

1)XSB中插入一批不同专业新生后,应该根据这些学生的专业,在CJB中自动生成这些学生应选课程记录(学号,课程号),成绩一列暂空.实现数据的自动填充.用XSB上的数据插入触发器实现:

2)修改KCB数据表中某些课程的学分,必然引起XSB中总学分数据的不一致,应该自动更新XSB中总学分,保持数据一致性.用KCB上的数据更新触发器实现:

此方法特点是只针对更新学分的课程,把修改后的学分增量反映到总学分中,对学生本次操作以前的总学分并不作检查和更新,处理问题相对灵活.

3)当向CJB中插入多行记录后,应该根据学生的成绩给出对应的XSB中总学分更新.用CJB上的数据插入触发器实现:

4)当向CJB中删除多行记录后,应该根据学生的成绩给出对应的XSB中总学分更新.用CJB上的数据删除触发器实现:

5)当修改CJB中部分学生的成绩后,应该在XSB中的总学分中得到体现.用CJB上的数据更新触发器实现:

此处需注意,及格分改为及格分,不及格分改为不及格分,并不改变学分;只有当及格分改为不及格分或相反,才影响学分.

4 触发器应用总结

触发器是一种特殊的存储过程,它可以方便地基于一个表的修改,自动更新其他相关表的记录,以保证数据的完整性.本文就多行数据更新操作的触发器在数据库的应用,作了部分研究,主要方法是先将相关数据存入临时数据表,再从临时数据表中提取数据更新到指定数据表.数据的更新采用增量更新,对更新前的数据不作检查,只反映本次操作所致的数据改变.希望本文提供的方法对其它数据库的开发能有参考价值.

[1]郑阿奇.SQLServer实用教程[M].北京:电子工业出版社,2009.

[2]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2006.

[3]孙晓宁.SQL Server 2005中触发器的应用[J].中国科技信息,2008(1):73-74.

[4]张峰,张莉莉.触发器在数据处理过程中的应用研究[J].计算机工程与科学,2008(05):156-158.

An Applied Study on the Trigger of the M ulti-line Data Update in SQL Server

DENG Jing-shun,HUANG Jie
(School ofMathematics and Computer Science,ShanxiDatong University,Datong Shanxi,037009)

A trigger is a special kind of stored procedure that can be executed automatically to update records in related tables based on datamodifications in a table in order to ensure the data integrity.In this article we shall discuss the application method to the trigger of themulti-line data update in SQL Server via a development example..

SQL Server;Multi_line Data Update;trigger

TP392

A

〔编辑 高海〕

1674-0874(2010)02-0005-03

2009-12-03

邓景顺(1964-),男,山西大同人,副教授,研究方向:数据库.

猜你喜欢

山西大同中总触发器
山西大同 黄花菜丰收在望
《山西大同大学学报(自然科学版)》征稿简则
山西大同大学采矿研究所简介
山西大同邀客共赏“小黄花大产业”
天冬中总氨基酸及多糖的提取工艺研究
使用触发器,强化安全性
正交试验法优化苦豆子总生物碱的超声提取工艺
大孔吸附树脂分离纯化蒲公英中总黄酮的工艺研究
几种常见触发器工作方式的讨论
中草药雀儿舌头中总生物碱含量的测定