• 
    

    
    

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

      ?

      幾種常見觸發(fā)器工作方式的討論

      2012-07-05 06:06:22
      科技傳播 2012年12期
      關(guān)鍵詞:觸發(fā)器視圖語句

      張 宇

      武漢軟件工程職業(yè)學(xué)院,湖北 武漢 430033

      設(shè)計觸發(fā)器時,理解觸發(fā)器的工作方式非常重要。在觸發(fā)器的執(zhí)行過程中,對每個數(shù)據(jù)庫表會應(yīng)用到兩個臨時表:inserted表和deleted表,這是兩個僅在內(nèi)存中的表,結(jié)構(gòu)與定義觸發(fā)器的表一樣,但用戶不能直接對表中的數(shù)據(jù)進(jìn)行操作,原表中數(shù)據(jù)的更新過程將經(jīng)常應(yīng)用到這兩個臨時表,各更新操作過程中inserted表和deleted表所起的作用見表1。

      表1 數(shù)據(jù)更新與表的記錄

      以下以學(xué)生數(shù)據(jù)庫為例討論INSERT觸發(fā)器、UPDATE觸發(fā)器、DELETE觸發(fā)器、INSTEAD OF觸發(fā)器工作原理及應(yīng)用。

      創(chuàng)建學(xué)生成績數(shù)據(jù)庫st,包含三個表:學(xué)生表,課程表和成績表。

      1 INSERT觸發(fā)器

      當(dāng)試圖向一個觸發(fā)器保護(hù)的表中插入一行數(shù)據(jù)時,INSERT觸發(fā)器將被激活。在插入操作過程中,插入的數(shù)據(jù)記錄在inserted表中,執(zhí)行插入的過程為:

      1)向定義了INSERT觸發(fā)器的表發(fā)送INSERT語句;

      2)INSERT語句記錄到日志中;

      3)執(zhí)行觸發(fā)器動作。

      當(dāng)INSERT觸發(fā)器被激發(fā)時,新的數(shù)據(jù)行被添加到表中,同時被插入數(shù)據(jù)行的副本也被添加到臨時表inserted表中,然后,觸發(fā)器中定義的語句接著被執(zhí)行。觸發(fā)器也可以檢查inserted表,確定是否執(zhí)行觸發(fā)器動作和如何執(zhí)行觸發(fā)器動作。

      為學(xué)生表創(chuàng)建插入觸發(fā)器,當(dāng)在學(xué)生表中插入學(xué)生時,在成績表中插入該生所有課程的成績記錄,成績?yōu)镹ULL。代碼如下:

      2 UPDATE觸發(fā)器

      當(dāng)更新定義有UPDATE觸發(fā)器的表中的數(shù)據(jù)時,UPDATE操作將激發(fā)對應(yīng)的觸發(fā)器,執(zhí)行更新時,UDPATE語句向deleted表中添加將被更新的行在更新前的原始數(shù)據(jù)行副本,把更新后的數(shù)據(jù)行副本添加到inserted表中,然后執(zhí)行解發(fā)器中定義的語句,執(zhí)行過程為:

      1)向表發(fā)送UPDATE語句;

      2)在日志中以INSERT和DELETE語句方式記錄UPDATE語句;

      3)觸發(fā)器可以檢查deleted表和inserted表以及被更新的庫表,確定是否更新多行以及如何執(zhí)行觸發(fā)器動作。在觸發(fā)器中,可以通過IF UPDATE語句監(jiān)控特定列數(shù)據(jù)是否被更新,當(dāng)被監(jiān)測列被更新時,觸發(fā)器可以采取相應(yīng)的動作。

      為學(xué)生表創(chuàng)建更新觸發(fā)器,當(dāng)更新學(xué)生表中學(xué)生的學(xué)號時,在成績表中也相應(yīng)更新該生的學(xué)號信息。代碼如下:

      3 DELETE觸發(fā)器

      當(dāng)試圖刪除定義了DELETE觸發(fā)器的表中數(shù)據(jù)行時,DELETE觸發(fā)器被激發(fā)。DELETE操作在刪除數(shù)據(jù)行時,將被刪除行的一個副本插入到deleted表中,執(zhí)行過程為:

      1)向表發(fā)送DELETE語句;

      2)在日志中記錄DELETE語句;

      3)執(zhí)行觸發(fā)器動作。

      在DELETE語句的執(zhí)行過程中被插入到deleted表中的數(shù)據(jù)行,不再存在于原數(shù)據(jù)表中,所以原數(shù)據(jù)表和deleted表中不會有共同的數(shù)據(jù)行。

      注意:為DELETE語句定義的觸發(fā)器對TRUNCATE TABLE語句并不執(zhí)行,因為TRUNCATE TABLE語句不記錄到日志中。

      為學(xué)生表創(chuàng)建刪除觸發(fā)器,當(dāng)刪除學(xué)生表中的學(xué)生時,成績表中該生的所有成績也相應(yīng)刪除。代碼如下:

      4 INSTEAD OF觸發(fā)器

      INSTEAD OF觸發(fā)器取消所有的觸發(fā)動作,原來的觸發(fā)動作(插入、更新或刪除)不再發(fā)生,并執(zhí)行相應(yīng)的替代功能。INSTEAD OF觸發(fā)器增加了可用于表和視圖的各種類型的更新操作,當(dāng)需要使用通常不可更新的視圖支持?jǐn)?shù)據(jù)修改時,INSTEAD OF觸發(fā)器可以通過內(nèi)含SQL語句完成數(shù)據(jù)的更新操作。

      對每一種觸發(fā)動作,每個表或視圖只能有一個INSTEAD OF觸發(fā)器,但在帶有WITH CHECK OPTION定義的視圖中不能創(chuàng)建INSTEAD OF觸發(fā)器。

      為學(xué)生表創(chuàng)建instead of觸發(fā)器,當(dāng)插入學(xué)生的年齡小于30時才插入學(xué)生表

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

      [2]王路群.數(shù)據(jù)庫原理與SQL Server教程[M].人民郵電出版社,2006,4.

      [3]微軟公司.SQL Server 2005數(shù)據(jù)庫開發(fā)與實現(xiàn)[M].高等教育出版社,2007,9.

      猜你喜歡
      觸發(fā)器視圖語句
      重點:語句銜接
      主從JK觸發(fā)器邏輯功能分析
      電子世界(2017年22期)2017-12-02 03:03:45
      精彩語句
      5.3 視圖與投影
      視圖
      Y—20重型運(yùn)輸機(jī)多視圖
      SA2型76毫米車載高炮多視圖
      使用觸發(fā)器,強(qiáng)化安全性
      如何搞定語句銜接題
      語文知識(2014年4期)2014-02-28 21:59:52
      對觸發(fā)器邏輯功能轉(zhuǎn)換的分析
      霍邱县| 绍兴县| 华坪县| 高碑店市| 辽宁省| 华坪县| 贵溪市| 攀枝花市| 颍上县| 丰县| 常宁市| 平果县| 志丹县| 包头市| 修武县| 宜黄县| 武平县| 奈曼旗| 都安| 溆浦县| 恩施市| 廊坊市| 浦城县| 昌黎县| 北碚区| 濉溪县| 当阳市| 开原市| 蒙阴县| 曲周县| 奈曼旗| 都昌县| 六安市| 广饶县| 富源县| 新宁县| 潢川县| 拜泉县| 龙里县| 深水埗区| 南川市|