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

SQL Server觸發器技術應用

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


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

主站蜘蛛池模板: 国产成人综合网在线观看| 亚洲国产日韩在线观看| 国产浮力第一页永久地址| 综合亚洲网| 午夜精品一区二区蜜桃| 免费精品一区二区h| 亚洲成a∧人片在线观看无码| 国产乱子伦手机在线| 色哟哟精品无码网站在线播放视频| 久久五月天综合| 国内老司机精品视频在线播出| aaa国产一级毛片| 日韩精品资源| 精品一区二区三区四区五区| 亚洲一区二区约美女探花| 中文字幕亚洲专区第19页| 91无码国产视频| 久久网欧美| 中文字幕在线永久在线视频2020| 啪啪免费视频一区二区| 91小视频版在线观看www| 国产成人免费| 国产91特黄特色A级毛片| 无码丝袜人妻| 亚洲成在线观看| 日韩不卡高清视频| 欧美国产成人在线| 欧美日本在线一区二区三区| 久久综合九色综合97婷婷| 国产一级毛片高清完整视频版| 人禽伦免费交视频网页播放| 久久亚洲天堂| 色综合日本| 亚洲中久无码永久在线观看软件 | 国产99视频精品免费观看9e| 色综合a怡红院怡红院首页| 综合色在线| 91麻豆久久久| 亚洲欧美综合另类图片小说区| 国产人在线成免费视频| 国产精品偷伦在线观看| 成人精品视频一区二区在线 | 久久精品人人做人人爽电影蜜月| 久久久久亚洲精品无码网站| 欧美中文字幕在线二区| 国产第一页免费浮力影院| 国产成人区在线观看视频| 欧美午夜理伦三级在线观看| 制服丝袜无码每日更新| 日韩国产综合精选| 一级黄色网站在线免费看| 特级欧美视频aaaaaa| 99热国产这里只有精品9九| 欧美日本二区| 国产精品99r8在线观看| 日本精品αv中文字幕| 亚洲无码高清免费视频亚洲| 天天综合天天综合| 久久精品丝袜高跟鞋| 国产精品va免费视频| 中文无码精品A∨在线观看不卡 | 欧美一区二区啪啪| 五月婷婷综合网| 午夜影院a级片| 亚洲视频在线网| 超碰色了色| 99re热精品视频中文字幕不卡| 久久国产精品夜色| 国产毛片网站| 啪啪啪亚洲无码| 精品视频在线观看你懂的一区| 91久久偷偷做嫩草影院| 一级爱做片免费观看久久| 中文字幕 91| 天天干伊人| 无码一区18禁| 美女裸体18禁网站| 精品国产一区91在线| 在线观看无码a∨| 久久99热66这里只有精品一| 欧美特黄一级大黄录像| 四虎永久在线|