• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      鄧景順,黃 杰

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

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

      鄧景順,黃 杰

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

      觸發(fā)器是一種特殊的存儲(chǔ)元件,它可以方便地基于一個(gè)表的數(shù)據(jù)更新,自動(dòng)更新其他相關(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)用中,大家對(duì)由一個(gè)記錄更新操作激活的觸發(fā)器討論較多,而對(duì)一次更新操縱多個(gè)記錄陳述較少.本文重點(diǎn)在于,使用SQL Server 2005中的DML觸發(fā)器[1],闡述多行數(shù)據(jù)更新的觸發(fā)器處理方法.

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

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

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

      成績(jī)表:CJB(學(xué)號(hào),課程號(hào),成績(jī))

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

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

      INSERT INTO XSB SELECT*FROM XSB1.

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

      UPDATE CJB SET成績(jī)=成績(jī)+10WHERE課程號(hào)='206'.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      [4]張峰,張莉莉.觸發(fā)器在數(shù)據(jù)處理過程中的應(yīng)用研究[J].計(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ù)庫(kù).

      猜你喜歡
      山西大同中總觸發(fā)器
      山西大同 黃花菜豐收在望
      《山西大同大學(xué)學(xué)報(bào)(自然科學(xué)版)》征稿簡(jiǎn)則
      山西大同大學(xué)采礦研究所簡(jiǎn)介
      山西大同邀客共賞“小黃花大產(chǎn)業(yè)”
      主從JK觸發(fā)器邏輯功能分析
      電子世界(2017年22期)2017-12-02 03:03:45
      天冬中總氨基酸及多糖的提取工藝研究
      使用觸發(fā)器,強(qiáng)化安全性
      正交試驗(yàn)法優(yōu)化苦豆子總生物堿的超聲提取工藝
      大孔吸附樹脂分離純化蒲公英中總黃酮的工藝研究
      中草藥雀兒舌頭中總生物堿含量的測(cè)定
      安顺市| 久治县| 衡东县| 萝北县| 武穴市| 思南县| 广东省| 普定县| 报价| 应城市| 务川| 崇阳县| 安康市| 襄汾县| 嵊泗县| 台东市| 麦盖提县| 潢川县| 丰原市| 朔州市| 鄂州市| 大荔县| 休宁县| 加查县| 东辽县| 红河县| 镇巴县| 常山县| 阿尔山市| 瑞丽市| 汉源县| 汶川县| 晴隆县| 裕民县| 宜川县| 利川市| 五大连池市| 额济纳旗| 普宁市| 方城县| 锦屏县|