国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SQL Server中多行數(shù)據(jù)更新的觸發(fā)器應(yīng)用研究

2010-09-05 01:49:54鄧景順
關(guān)鍵詞:山西大同中總觸發(fā)器

鄧景順,黃 杰

(山西大同大學(xué)數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院,山西大同 037009)

SQL Server中多行數(shù)據(jù)更新的觸發(fā)器應(yīng)用研究

鄧景順,黃 杰

(山西大同大學(xué)數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院,山西大同 037009)

觸發(fā)器是一種特殊的存儲元件,它可以方便地基于一個表的數(shù)據(jù)更新,自動更新其他相關(guān)表的記錄,以保證數(shù)據(jù)的完整性.文章通過開發(fā)實(shí)例,闡述SQL Server中多行數(shù)據(jù)更新的觸發(fā)器處理方法.

SQL Server 多行數(shù)據(jù)更新 觸發(fā)器

1 問題的提出

數(shù)據(jù)更新操作有三種:向數(shù)據(jù)表中添加記錄、修改記錄、刪除記錄.在SQL Server觸發(fā)器應(yīng)用中,大家對由一個記錄更新操作激活的觸發(fā)器討論較多,而對一次更新操縱多個記錄陳述較少.本文重點(diǎn)在于,使用SQL Server 2005中的DML觸發(fā)器[1],闡述多行數(shù)據(jù)更新的觸發(fā)器處理方法.

本文使用的數(shù)據(jù)庫其中數(shù)據(jù)表及結(jié)構(gòu)為:

學(xué)生表:XSB(學(xué)號,姓名,專業(yè),總學(xué)分,…)

課程表:KCB(課程號,課程名,專業(yè),學(xué)分,…)

成績表:CJB(學(xué)號,課程號,成績)

其中XSB中總學(xué)分,應(yīng)為學(xué)生所選成績合格(>=60分)的課程,對應(yīng)的學(xué)分之和.

多行數(shù)據(jù)的更新舉例:

INSERT INTO XSB SELECT*FROM XSB1.

DELETE FROM XSBWHERE學(xué)號<'050001'.

UPDATE CJB SET成績=成績+10WHERE課程號='206'.

類似這些操作都會引起數(shù)據(jù)表中一行或多行記錄的更新操作.由這些操作引發(fā)的觸發(fā)器設(shè)計要比一個記錄時的情況復(fù)雜.

2 觸發(fā)器工作原理

觸發(fā)器是一個被指定關(guān)聯(lián)到一個表的數(shù)據(jù)對象,觸發(fā)器是不需要調(diào)用的,當(dāng)對一個表的特別事件出現(xiàn)時(如INSERT、UPDATE、DELETE等),它就被激活[2].

SQL Server 2005中,按照觸發(fā)事件的不同可經(jīng)將觸發(fā)器分為兩大類:DML觸發(fā)器和DDL觸發(fā)器.當(dāng)DML觸發(fā)器被執(zhí)行時,系統(tǒng)創(chuàng)建了兩個特殊的邏輯表:inserted表和deleted表:

inserted表:當(dāng)向表中插入數(shù)據(jù)時,INSERT觸發(fā)器觸發(fā)執(zhí)行,新的記錄插入到觸發(fā)器表和inserted表中.

deleted表:用于保存已從表中刪除的記錄,當(dāng)觸發(fā)一個DELETE觸發(fā)器時,被刪除的記錄存放到deleted表中.

修改一條記錄等于插入一條新記錄,同時刪除舊記錄.當(dāng)對定義了UPDATE觸發(fā)器的表記錄修改時,表中原記錄移到deleted表,修改過的記錄插入到inserted表及被修改的表中.

這兩個表總是與被觸發(fā)的表有相同的結(jié)構(gòu),存儲在系統(tǒng)內(nèi)存中,不允許用戶對其修改,但用戶可以引用表中數(shù)據(jù),當(dāng)觸發(fā)器完成工作時,二表也被系統(tǒng)刪除[3,4].

在本文下面的方法中,都用到以上二個系統(tǒng)表.此外還會用到自定義的臨時表,用后需刪除.

3 觸發(fā)器應(yīng)用方法

1)XSB中插入一批不同專業(yè)新生后,應(yīng)該根據(jù)這些學(xué)生的專業(yè),在CJB中自動生成這些學(xué)生應(yīng)選課程記錄(學(xué)號,課程號),成績一列暫空.實(shí)現(xiàn)數(shù)據(jù)的自動填充.用XSB上的數(shù)據(jù)插入觸發(fā)器實(shí)現(xiàn):

2)修改KCB數(shù)據(jù)表中某些課程的學(xué)分,必然引起XSB中總學(xué)分?jǐn)?shù)據(jù)的不一致,應(yīng)該自動更新XSB中總學(xué)分,保持?jǐn)?shù)據(jù)一致性.用KCB上的數(shù)據(jù)更新觸發(fā)器實(shí)現(xiàn):

此方法特點(diǎn)是只針對更新學(xué)分的課程,把修改后的學(xué)分增量反映到總學(xué)分中,對學(xué)生本次操作以前的總學(xué)分并不作檢查和更新,處理問題相對靈活.

3)當(dāng)向CJB中插入多行記錄后,應(yīng)該根據(jù)學(xué)生的成績給出對應(yīng)的XSB中總學(xué)分更新.用CJB上的數(shù)據(jù)插入觸發(fā)器實(shí)現(xiàn):

4)當(dāng)向CJB中刪除多行記錄后,應(yīng)該根據(jù)學(xué)生的成績給出對應(yīng)的XSB中總學(xué)分更新.用CJB上的數(shù)據(jù)刪除觸發(fā)器實(shí)現(xiàn):

5)當(dāng)修改CJB中部分學(xué)生的成績后,應(yīng)該在XSB中的總學(xué)分中得到體現(xiàn).用CJB上的數(shù)據(jù)更新觸發(fā)器實(shí)現(xiàn):

此處需注意,及格分改為及格分,不及格分改為不及格分,并不改變學(xué)分;只有當(dāng)及格分改為不及格分或相反,才影響學(xué)分.

4 觸發(fā)器應(yīng)用總結(jié)

觸發(fā)器是一種特殊的存儲過程,它可以方便地基于一個表的修改,自動更新其他相關(guān)表的記錄,以保證數(shù)據(jù)的完整性.本文就多行數(shù)據(jù)更新操作的觸發(fā)器在數(shù)據(jù)庫的應(yīng)用,作了部分研究,主要方法是先將相關(guān)數(shù)據(jù)存入臨時數(shù)據(jù)表,再從臨時數(shù)據(jù)表中提取數(shù)據(jù)更新到指定數(shù)據(jù)表.?dāng)?shù)據(jù)的更新采用增量更新,對更新前的數(shù)據(jù)不作檢查,只反映本次操作所致的數(shù)據(jù)改變.希望本文提供的方法對其它數(shù)據(jù)庫的開發(fā)能有參考價值.

[1]鄭阿奇.SQLServer實(shí)用教程[M].北京:電子工業(yè)出版社,2009.

[2]王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].北京:高等教育出版社,2006.

[3]孫曉寧.SQL Server 2005中觸發(fā)器的應(yīng)用[J].中國科技信息,2008(1):73-74.

[4]張峰,張莉莉.觸發(fā)器在數(shù)據(jù)處理過程中的應(yīng)用研究[J].計算機(jī)工程與科學(xué),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-),男,山西大同人,副教授,研究方向:數(shù)據(jù)庫.

猜你喜歡
山西大同中總觸發(fā)器
山西大同 黃花菜豐收在望
《山西大同大學(xué)學(xué)報(自然科學(xué)版)》征稿簡則
山西大同大學(xué)采礦研究所簡介
山西大同邀客共賞“小黃花大產(chǎn)業(yè)”
主從JK觸發(fā)器邏輯功能分析
電子世界(2017年22期)2017-12-02 03:03:45
天冬中總氨基酸及多糖的提取工藝研究
使用觸發(fā)器,強(qiáng)化安全性
正交試驗(yàn)法優(yōu)化苦豆子總生物堿的超聲提取工藝
大孔吸附樹脂分離純化蒲公英中總黃酮的工藝研究
中草藥雀兒舌頭中總生物堿含量的測定
凤山县| 昭平县| 英德市| 攀枝花市| 大新县| 青冈县| 雅安市| 海宁市| 蕲春县| 浮山县| 增城市| 简阳市| 聂荣县| 横山县| 河曲县| 镇江市| 崇义县| 犍为县| 平罗县| 彝良县| 保靖县| 蚌埠市| 平阳县| 永嘉县| 乌审旗| 高要市| 永和县| 博乐市| 开封县| 昭通市| 阳曲县| 台前县| 科尔| 泰顺县| 来宾市| 文化| 金华市| 宁德市| 奉贤区| 奉化市| 历史|