999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SQL Server觸發(fā)器技術(shù)應用

2011-12-29 00:00:00劉冰劉秋平羅來俊劉邦桂
考試周刊 2011年25期


  摘 要: 本文介紹了SQL Server觸發(fā)器的概念和類型,總結(jié)了SQL Server觸發(fā)器在程序設計中的應用,并給出了SQL Server觸發(fā)器的應用實例。
  關鍵詞: SQL Server 觸發(fā)器 應用實例
  
  1.引言
  在大型關系數(shù)據(jù)庫設計中,如何保證數(shù)據(jù)庫中的數(shù)據(jù)完整性是一項重要的研究內(nèi)容。數(shù)據(jù)完整性是指存儲在數(shù)據(jù)庫中的數(shù)據(jù)的一致性。主要體現(xiàn)在實體完整性、域完整性、參照完整性和用戶的自定義完整性等方面。雖然從最基本的數(shù)據(jù)類型到多種形式的約束條件,都提出了數(shù)據(jù)完整性的解決方案,但這些方法較為簡單,不能解決比較復雜的數(shù)據(jù)完整性問題。而觸發(fā)器作為一種高級的技術(shù),可以輕松地解決任何有關保證數(shù)據(jù)完整性的問題。
  觸發(fā)器一旦被定義,就存在于后臺數(shù)據(jù)庫系統(tǒng)中,并會往表中插入記錄、更改記錄或者刪除記錄時,被自動地隱式執(zhí)行,從而使得它的設計既與前臺的平臺無關,又免除了前臺相關的數(shù)據(jù)操作設計。因此,觸發(fā)器可以用來對表實施復雜的完整性約束,當觸發(fā)器所保護的數(shù)據(jù)發(fā)生改變時,觸發(fā)器會自動被激活,從而防止對數(shù)據(jù)的不正確修改[1]。
  2.觸發(fā)器的概念
  觸發(fā)器是SQL Server為應用程序開發(fā)人員提供的一種保證數(shù)據(jù)庫中數(shù)據(jù)完整性的方法,它是一種特殊的存儲過程,但它和一般的存儲過程有本質(zhì)的區(qū)別,存儲過程可以由用戶直接調(diào)用執(zhí)行,而觸發(fā)器不能被直接調(diào)用執(zhí)行。觸發(fā)器主要是通過事件進行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名字而被直接調(diào)用。當對某一表進行Update,Insert,Delete操作時,SQL Server就會自動執(zhí)行觸發(fā)器所定義的SQL語句。
  利用觸發(fā)器可以比較數(shù)據(jù)修改前和修改后的狀態(tài)。通過Insert,Update語句,觸發(fā)器可以提供參考數(shù)據(jù)變化的能力,這樣就允許參考被觸發(fā)器中修改語句影響到的記錄。
  使用觸發(fā)器可以維護非規(guī)范化的數(shù)據(jù),可以使用觸發(fā)器維護非正規(guī)化數(shù)據(jù)庫環(huán)境中的行級數(shù)據(jù)完整性[2]。
  3.觸發(fā)器的種類
  根據(jù)觸發(fā)器被激活的時機不同,SQL Server中提供了兩種類型的觸發(fā)器:INSTEAD OF觸發(fā)器和AFTER觸發(fā)器。
  AFTER觸發(fā)器在一個INSERT、UPDATE或DELETE語句完成之后執(zhí)行,進行約束檢查等動作都將在AFTER觸發(fā)器被激活之前發(fā)生。AFTER觸發(fā)器只能用于表。
  INSTEAD OF觸發(fā)器用于替代引起觸發(fā)器執(zhí)行的T-SQL語句。除表之外,INSTEAD OF觸發(fā)器也可以用于視圖,用來擴展視圖可以支持的更新操作。
  一個表或視圖的每個修改動作(INSERT、UPDATE和DELETE)都可以有一個INSTEAD OF觸發(fā)器,但可以有多個AFTER觸發(fā)器[3]。
  4.觸發(fā)器的實現(xiàn)
  觸發(fā)器的實現(xiàn)離不了兩個專用表:Inserted表和Deleted表。這是兩個邏輯表,由系統(tǒng)來維護,用戶不能對它們進行修改。它們存放在內(nèi)存而不是數(shù)據(jù)庫中。這兩個表的結(jié)構(gòu)總是與激活該觸發(fā)器的表的結(jié)構(gòu)相同。觸發(fā)器執(zhí)行完成后,與該觸發(fā)器相關的這兩個表也會被刪除。
  當向觸發(fā)器表中插入數(shù)據(jù)時,新的記錄會增加到觸發(fā)器表和inserted表中;當刪除觸發(fā)器表中的數(shù)據(jù)時,被刪除的記錄會存放到deleted表中;當更新觸發(fā)器表中的數(shù)據(jù)時,相當于插入一條新記錄和刪除一條舊記錄,此時表中原有的記錄存放到deleted表中,修改后的記錄插入到inserted表中。
  在創(chuàng)建觸發(fā)器時需要制定以下內(nèi)容:觸發(fā)器的名稱、觸發(fā)器所基于的表或視圖、觸發(fā)器種類(AFTER或INSTEAD OF)、激活觸發(fā)器的修改語句(INSERT、UPDATE和DELETE)、觸發(fā)器執(zhí)行的語句,用T-SQL語句創(chuàng)建觸發(fā)器的具體語法如下[4]:
  CREATE Trigger trigger_name
  ON { table_name | view_name }
  { AFTER | INSTEAD OF }
  [INSERT,UPDATE,DELETE ]
  AS
  Sq_Statement
  5.觸發(fā)器應用實例
  實例1:本例說明了觸發(fā)器如何在選課表choice中維護數(shù)據(jù)的完整性。當向choice表插入一條記錄時,檢查該記錄的學號在學生表student中是否存在,檢查課程號在課程表course中是否存在,若有一項為否,則不允許插入。
  CREATE TRIGGER choice_ins_trigger
  ON choice
  FOR INSERT
  AS
  IF EXISTS(select * from inserted
  Where inserted.學號 NOT IN(select student.學號 from student)OR
  Inserted.課程號 NOT IN(select course.課程號 from course))
  BEGIN
  PRINT ″此記錄無法插入!″
  ROLLBACK TRANSACTION
  END
  ELSE
  PRINT ″該記錄已被插入!″
  實例2:為學生表student建立一個After Delete觸發(fā)器,當要刪除學生表中某個學生的記錄時,相應的要把該學生在學生成績表score中的成績記錄刪除,否則會造成數(shù)據(jù)冗余。
  CREATE TRIGGER stusco_del_trigger
  ON student
  AFTER DELETE
  AS
  DECLARE @AK2 CHAR(10)
  SELECT @AK2=學號 FROM deleted
  Delete score WHERE 學號=@AK2
  RETURN
  實例3:本例說明了觸發(fā)器如何強制實施業(yè)務規(guī)則。在圖書管理系統(tǒng)中,當刪除Readers表中的讀者信息時,通過DELETE觸發(fā)器檢查該借閱者是否還有書籍尚未歸還,如果有就取消刪除操作(回滾事務),并返回相關提示信息。
  CREATE TRIGGER reader_del_trigger
  ON readers
  FOR DELETE
  AS
  DECLARE @data_js int
  SELECT @data_js=已借數(shù)量 FROM deleted
  IF @data_js>0
  BEGIN
  PRINT ″還有″+RTRIM(@data_js)+″本書沒還。″
  ROLLBACK TRANSACTION
  END
  ELSE
  PRINT ″該讀者已被刪除!″
  6.結(jié)語
  本文研究了開發(fā)SQL Server 2000觸發(fā)器的技術(shù)及其應用。觸發(fā)器是一種非常重要的應用邏輯,它可以完成復雜的數(shù)據(jù)完整性和一致性的工作。掌握開發(fā)觸發(fā)器的技術(shù),編寫出高效率的觸發(fā)器邏輯,是數(shù)據(jù)庫應用程序開發(fā)成功的重要保障。
  
  參考文獻:
  [1]張蒲生,何升.SQL Server數(shù)據(jù)庫應用技術(shù)[M].北京:清華大學出版社,2005.
  [2] 陸昌輝,吳曉華.SQL Server 2000核心技術(shù)揭密[M].北京:宇航出版社,2002.
  [3]徐曉麗.巧妙應用SQL Server觸發(fā)器[J].微型電腦應用,2010.
  [4]張丹.SQL Server中存儲過程與觸發(fā)器技術(shù)的研究與應用[J].科技創(chuàng)新導報,2008.

主站蜘蛛池模板: 91啦中文字幕| 91精品啪在线观看国产91| 高清精品美女在线播放| jizz亚洲高清在线观看| 77777亚洲午夜久久多人| 精品视频一区二区观看| 久久狠狠色噜噜狠狠狠狠97视色 | 欧美亚洲国产一区| 亚洲成肉网| 日本黄色不卡视频| 亚洲色图综合在线| 在线不卡免费视频| 久久久久亚洲AV成人网站软件| 色婷婷在线播放| 天天综合网色| 毛片视频网| 亚洲成A人V欧美综合天堂| 夜夜爽免费视频| 男女性午夜福利网站| 青青青国产视频手机| 九色91在线视频| 日韩在线1| 色婷婷亚洲综合五月| 热九九精品| 亚洲欧美h| 国产理论精品| 日韩成人在线视频| 婷婷午夜影院| 亚洲另类色| 亚洲欧美另类中文字幕| 亚洲精品午夜无码电影网| 一级爱做片免费观看久久| 免费精品一区二区h| 久久综合九九亚洲一区| 91在线激情在线观看| 日韩福利视频导航| 日韩毛片免费视频| 日本午夜影院| 一级全黄毛片| 丝袜无码一区二区三区| 成人伊人色一区二区三区| 国产精品亚欧美一区二区三区| 中文无码影院| 中文字幕人妻无码系列第三区| 亚洲第一视频网| 美女内射视频WWW网站午夜| 无码又爽又刺激的高潮视频| 欧美爱爱网| 一区二区三区成人| 欧美97欧美综合色伦图| 视频二区国产精品职场同事| 亚洲日韩国产精品无码专区| 亚洲永久免费网站| 欧美成人亚洲综合精品欧美激情| 欧美日韩午夜| 99久久精品视香蕉蕉| 91在线一9|永久视频在线| 青青操国产| 日本亚洲欧美在线| 亚洲乱码精品久久久久..| 国产成人精品在线1区| 日本午夜在线视频| 国产成人夜色91| 日韩毛片在线播放| 亚洲欧美在线精品一区二区| 青青青国产视频| 亚洲成a人在线播放www| 久久毛片免费基地| 国产成人精品一区二区不卡| 欧美高清三区| 国产精品内射视频| 国产欧美日韩综合一区在线播放| 亚洲人成网址| 亚洲精品中文字幕午夜| 国产一级视频久久| 91香蕉视频下载网站| 国产不卡国语在线| 午夜福利免费视频| 九九九久久国产精品| 在线亚洲小视频| 国产丰满成熟女性性满足视频| 91亚洲免费|