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

使用SQL Server觸發器實現數據表的級聯更新

2016-03-10 12:28:24王鵬宇
科技視界 2016年25期
關鍵詞:數據庫

王鵬宇

(鶴壁職業技術學院,河南 鶴壁458030)

使用SQL Server觸發器實現數據表的級聯更新

王鵬宇

(鶴壁職業技術學院,河南 鶴壁458030)

數據庫的數據完整性是數據庫正常運行的重要保證,而觸發器是保證數據完整性的重要方式。本文講述了DML觸發器的分類及工作原理,并通過具體實例詳細討論了如何使用觸發器來實現數據庫的級聯更新,從而更好的保證數據庫數據完整性。

觸發器;數據完整性;級聯更新

0 引言

數據庫完整性就是保證數據庫中數據的正確性和一致性。其中正確性指數據要符合語義規范,數據定義在規范的有效范圍內;一致性是指數據庫中所表示的同一事物的數據應當一致。在SQL Server中數據庫完整性主要有約束來定義,約束定義了必須遵循的用于維護數據一致性和正確性的有效性規則。簡單的完整性要求可以在定義基本表時通過創建約束來實現,但如果想要實現更為復雜的數據完整性要求,比如依據數據表的變化實現數據的自動級聯更新等,這就需要用觸發器來完成了。本文淺析了在SQL Server中通過觸發器實現數據庫完整性的原理,并結合一個實例分析了使用觸發器實現級聯更新的一般過程。

1 觸發器概述及其工作原理

觸發器是SQL Server數據庫的重要工具,可以被看作是一種特殊的存儲過程。一般的存儲過程通過存儲過程名稱被調用執行,而觸發器是通過數據庫事件的觸發而被執行,在對觸發器所監控的表執行添加、修改或刪除操作時觸發器被觸發。觸發器的過程體中可以包含復雜的SQL語句,因此觸發器可以實現比約束更加復雜的數據完整性要求。

在 SQL Server 2005中有兩種觸發器:DDL觸發器和 DML觸發器。DDL觸發器是被數據定義語句(DDL)所觸發而被調用的觸發器; DML觸發器是被數據操作語句(DML)所觸發而被調用的觸發器。數據完整性規則主要由DML觸發器創建,因此本文主要討論DML觸發器。由于觸發器被激活后所執行的操作不同,SQL Server中包含兩種觸發方式:After觸發方式和Instead Of觸發方式。After觸發方式是比較常用的觸發方式(另有一種For觸發方式與After相同,是為與 SQL Server早期版本兼容的可選項),這種觸發方式的觸發器在進行數據操作以后被觸發,先執行了觸發語句(插入、更新、刪除),然后執行了觸發器。INSTEAD OF觸發方式在數據發生變化之前被觸發,停止觸發語句(插入、更新、刪除)的執行,直接執行觸發器定義的內容。

本文將以After觸發器為例來講述使用觸發器實現數據庫級聯更新。其創建語法格式如下:

CREATE TRIGGER trigger_name

ON table_name

AFTER{[INSERT][,][UPDATE][,][DELETE]}

AS

Sql_statements

在實際應用中,SQL Server為每個觸發器都創建了兩個專用表:Inserted表和Deleted表,當觸發器被執行時產生。這是兩個邏輯表,存放于內存中,表的結構與被觸發器作用的表的結構相同且由系統自動創建和撤銷。

當執行Insert語句時,Inserted表中保存要向表中插入的所有行。

當執行Delete語句時,Deleted表中保存要從表中刪除的所有行。

當執行Update語句時,相當于先執行一個Delete操作,再執行一個Insert操作。

2 觸發器應用案例

下面我們以淘寶某網店數據表為例討論一下使用觸發器實現數據表的級聯更新。

我們知道在商品購物頁面點擊立即購買后,雖然我們還沒有付錢但是這就表示我們和商家之間已經生成了一個訂單。那么其他人再打開此商品的購買頁面時,頁面上顯示的庫存數量就應該更新為新的庫存數量了。其實這個過程就是通過觸發器更新數據表來實現的。

在淘寶網站的后臺,買家購買了某商品后就會生成一個新的訂單,也就是說在訂單表中會插入一條新的記錄來表示這個新訂單,其中就包含了訂單編號、商品編號、商品價格、購買數量等信息。同時在庫存表中被購買商品的庫存數量也應該被更新為原來的庫存數量減去購買數量從而生成新的庫存數量。這個過程的實現就被稱為數據表的級聯更新,所謂級聯更新也叫聯動更新,指當我們修改了一個數據表中的某些數據,系統會自動去修改另一個數據表相應數據。

首先我們先要在訂單表上建立一個insert觸發器用于響應對訂單表的插入操作。當我們點擊立即購買后,系統會生成一個新的訂單,然后把新訂單的數據插入到訂單表中,同時也會觸發insert觸發器這樣訂單數據也會同步插入到inserted表中,然后會執行這個觸發器。那么我們就可以在這個觸發器中定義一個更新操作,去同步更新庫存表,讓庫存量跟新為新的庫存量。

create trigger t1

on訂單表

for insert

as

update庫存表

set庫存數量=庫存數量- (select購買數量from inserted)

where商品編號=(select商品編號 from inserted)

可以看到經過這個觸發器的執行,用戶在下訂單的同時商品的庫存數量也被相應的修改為新的庫存數量。

3 結束語

在數據庫的應用中,觸發器起到了非常重要的作用。它是保證數據完整性的重要補充工具,它可以很容易的實現表間操作所引發的數據的級聯更新從而能夠更好的保證數據的完整性,幫助用戶實現滿足企業需求的規則,使得數據庫系統更加方便、高效和安全。

這篇文章結合具體的實例討論了DML觸發器的工作原理和實現數據表級聯更新的方法。結果表明應用觸發器不僅可以處理表與表之間復雜的邏輯關系,優化數據庫的設計,更好地維護數據庫中數據的完整性;同時還可以實現由于數據修改而引發的相關數據的自動級聯更新操作,從而更安全高效的完成數據更新,避免了人工操作帶來的安全隱患,提高了整體數據庫系統的安全性能。

[1]王珊,薩師煊.數據庫系統概論(第4版)[M].北京:高等教育出版社,2006.

[2]羅運模,王珊.SQL Server數據庫系統基礎[M].北京:高等教育出版社,2003.

[3]張益星.SQL Server 2000觸發器技術及應用[J].信息技術,2005(10):69-70.

[4]徐國華,白鳳娥.數據庫中的觸發器技術[J].太原大學學報,2006(3):64-65.

[5]符策銳.觸發器保持評教系統數據完整性的應用研究[J].微計算機信息,2012,28 (8):173-174,24.

[責任編輯:朱麗娜]

王鵬宇(1978—),漢族,河南淇縣人,華中科技大學計算機技術碩士,鶴壁職業技術學院,講師,研究方向為軟件設計、數據庫技術。

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 亚洲天堂精品在线观看| 波多野结衣一区二区三区四区视频| 91久久国产综合精品女同我| 亚洲国产精品VA在线看黑人| 日韩精品一区二区三区免费在线观看| 国产综合欧美| 国产污视频在线观看| 蜜臀av性久久久久蜜臀aⅴ麻豆| 免费一级α片在线观看| h网址在线观看| 99视频在线精品免费观看6| 黄色国产在线| 国产一区二区三区在线精品专区 | 秘书高跟黑色丝袜国产91在线 | 狠狠v日韩v欧美v| 日本高清有码人妻| 久久超级碰| 日韩在线1| 92午夜福利影院一区二区三区| 99久久精品免费观看国产| 色爽网免费视频| 久久人午夜亚洲精品无码区| 久久一级电影| 国产精品3p视频| 色偷偷男人的天堂亚洲av| 欧美第二区| 国产精品粉嫩| 黄色成年视频| 成·人免费午夜无码视频在线观看| AV老司机AV天堂| 欧美精品啪啪一区二区三区| 毛片网站免费在线观看| 国产成人亚洲无码淙合青草| 91午夜福利在线观看精品| 朝桐光一区二区| 欧美综合成人| 亚洲天堂网在线播放| 五月婷婷导航| 国产精品55夜色66夜色| 国产在线无码一区二区三区| 美女扒开下面流白浆在线试听| 亚洲欧美一级一级a| 久久久精品久久久久三级| 99热国产这里只有精品9九| 亚洲精品视频免费观看| 色九九视频| 草草影院国产第一页| 午夜视频www| 美女扒开下面流白浆在线试听 | 精品无码一区二区三区电影| 欧美天天干| 欧美在线视频不卡第一页| 亚洲第一极品精品无码| 国产在线第二页| 国产综合网站| 欧美激情首页| 99精品免费欧美成人小视频| 4虎影视国产在线观看精品| 国产激情无码一区二区免费| 免费国产小视频在线观看| 露脸国产精品自产在线播| 亚洲天堂成人在线观看| 呦女精品网站| 精品伊人久久久香线蕉| 日韩资源站| 99在线观看国产| 丰满人妻一区二区三区视频| 久久久久亚洲AV成人人电影软件| 成人一级黄色毛片| 色综合五月婷婷| 国产区精品高清在线观看| 久久激情影院| 欧美国产精品不卡在线观看| 婷婷亚洲综合五月天在线| 熟妇丰满人妻av无码区| 又黄又爽视频好爽视频| 国产91色在线| 欧美成人免费午夜全| 1769国产精品视频免费观看| 亚洲成肉网| 国产美女一级毛片| 久久精品日日躁夜夜躁欧美|