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

觸發器在數據庫設計中的應用

2016-05-11 11:01:15陳舒心
廣東教育·職教版 2016年4期
關鍵詞:數據庫

摘要:觸發器是一種特殊的存儲過程。它的執行不是通過顯性的調用,而是通過對相應表格數據實現插入、更新或刪除時自動激活執行。在程序開發過程中,可以通過觸發器對程序后臺數據實施復雜的完整性約束。本文以本校示范校建設專題網站管理后臺設計為例,闡述觸發器的概念及其在網站功能實現中的定義及應用。

關鍵詞:觸發器;SQLSERVER;數據庫

中圖分類號:G712文獻標識碼:A文章編號:1005-1422(2016)04-0110-03

作者簡介:陳舒心(1978-),廣東省輕工職業技術學校講師,碩士。研究方向:現代教育技術。(廣東 廣州/510300)

一、引言

隨著網絡技術的發展,網站瀏覽成為我們生活中不可或缺的一部分。一個制作精良的網站,除了要有精美的前臺頁面,必然也離不開后臺數據的處理。在復雜的數據處理過程中,保證網站數據的完整性尤為重要。數據完整性是指存儲在數據庫中的數據正確無誤并且相關數據具有一致性。通常在數據庫設計階段,可以通過創建表格的約束來實現數據完整性。譬如:通過主鍵約束或唯一鍵約束可以規范表格中某一字段的值不可重復;通過檢查約束可以規范表格中某一字段的取值范圍。但這些約束對不符合條件的數據只能做出單一拒絕執行的動作。如果需要實現較為復雜反饋或操作時,這些約束還是存在一定的局限性的。如果要求處理數據過程中,系統能自動根據用戶對表格的操作做出不同的響應執行某些操作,那么,就可以使用觸發器去實現。

二、觸發器

觸發器是一種特殊的存儲過程,但它不像存儲過程能直接通過函數名被調用。當受觸發器保護的數據受到某些操作影響時,觸發器會被數據庫系統激活執行。因此,從激活操作的角度,觸發器可分以下三種類型:插入觸發器、更新觸發器和刪除觸發器。無論是哪種操作,由于觸發執行的時機不同,SQLServer提供了兩種前綴類型不同的觸發器定義:After觸發器和Instead of觸發器。

After觸發器要求只執行插入、更新、刪除中任一操作之后激活觸發器執行。而Instead of觸發器的激活時機剛好相反,它是在執行插入、更新、刪除中任一操作之前就被激活。因此,在執行Instead of觸發器時,系統所做的相關操作都是未被執行的。在SQLServer中,After觸發器是默認觸發器。

在每一個觸發器被激活時,數據庫系統都會自動創建兩張數據表:Inserted表和Delete表。它們只保存在內存中,并不真實存在于數據庫表對象中。兩張表的結構與觸發器作用的表格的結構相同。Instead表中存放的是系統執行INSERT 和UPDATE 語句時被影響的數據行的副本。在一個插入或更新事務處理中, 新添加的行會同時被添加到Inserted 表和觸發器作用的數據表中。Deleted 表用于存儲系統執行DELETE 和UPDATE 語句時被影響的數據行的副本。在執行DELETE或UPDATE 語句時,相關數據行從數據表中刪除,同時被傳送到Deleted 表中。Deleted 表和觸發器作用的數據表一般不會出現內容完全相同的數據行。當觸發器執行成功,數據操作語句執行完成后,整個事務過程才算完成。否則,這個事務要回滾。因此,觸發器定義的條件不能與表格中已經定義的完整性約束相矛盾。當觸發器完成后,Inserted表和Delete表會自動刪除。

三、應用實例——基于T-SQL語言的觸發器的設計

本校在示范校建設過程中,需要搭建示范校建設專題網站用以發布示范校項目建設過程的動態信息、通知公告及工作簡報。同時展示項目建設的方案、資源、成果等。網站后臺的主體功能是進行新聞信息與用戶信息的管理。數據后臺分別設計了數據表Admin(用戶信息表)、News_operation(新聞操作日志)、News(新聞發布信息表)、News_Class(新聞類別表)、News_Picture(新聞圖片信息表)等表格,用以存儲網站上相關數據。

由于文章篇幅問題,不能將整個網站數據后臺所做設計一一闡述,因此,在下文中以其中的三張有關聯的數據表Admin、News、News_operation為例,闡述選擇觸發器實現完整性約束的原因及設計過程。具體表格結構如表1、表2、表3所示。

三張數據表間的關聯如下:

1.Admin表與News表

在網站上的新聞公告,必須是通過注冊賬號登錄成功后才能發布,發布者的名稱要與登錄的賬號一致。因此,對于Admin表的UserName字段的值和News表的Author字段的值必須一致,這種一致性可以通過定義兩張表格UserName字段和Author字段主外鍵約束實現。其中,UserName字段為主鍵,Admin表為主鍵表;Author字段為外鍵,News表為外鍵表。主外鍵約束條件下,通常可以通過定義相關數據級聯更新和級聯刪除來達到數據完整性。所謂級聯更新和刪除,就是主鍵表中的數據被執行更新或者刪除操作時,與其相關的外鍵表中的對應數據也自動進行更新或者刪除。顯然,在本站中設置Admin表的UserName字段和News表的Author字段級聯更新時合適的。但是如果設置級聯刪除,則會導致某些新聞公告在發布用戶注銷后也被刪除,造成信息的丟失。因此,在主鍵表Admin表執行數據刪除時為保證外鍵表News表中對應數據不丟失的前提下,又可以達到數據的一致性,筆者選擇通過為Admin表設計一個刪除觸發器,在數據執行刪除操作時系統激活,將News表中的Author字段設置為空值。

2.News表與News_operation表

考慮到每個注冊用戶登錄網站后,都可以對數據實行增刪改的操作。為保障數據安全,網站需要跟蹤記錄執行的操作的用戶、操作類型及執行操作的時間。因此,當用戶對News表數據執行操作時,相關執行的信息將會記錄至News_operation表中。通過在表格中設置單純的完整性約束,很難實現此功能。當然也可以考慮借助開發工具,編寫前臺代碼實現。但若通過前臺編碼實現此功能,不僅會增加程序員的工作量,而且每次在執行到編碼時都必須經過編譯,將指令從前臺通過網絡傳輸到后臺,才能達到目的。在這個過程中必然會耗費一定是時間和網絡帶寬。若果通過觸發器去實現,由于觸發器是直接存儲在數據后臺,可以在后臺數據設計階段就設計定義好,因此在此設計觸發器去實現此需求更為合適。

以Admin、News、News_operation為基本表,需要滿足以下要求:①Admin表中用戶信息刪除時,該用戶發布的所有新聞公告的發布人Author字段置為空值(Null);②用戶對News表數據進行刪除或者修改或者添加時,將用戶對表格操作記錄到Admin_log表中。觸發器實現如下:

1.發布人Author字段置空

create trigger News_delete

on Adimin for delete

as

update News

set Author=Null

FROM News,Deleted

whereNews.ID=Delete.ID

2.記錄用戶對新聞表的操作

create trigger News_operation

on News for insert,update,delete

as

if not exists(select1 from inserted) and exists(select 1 from deleted)

begin /*inserted表無記錄,是刪除操作*/

DECLARE @author NVARCHAR(50)

select @author=f_editer from deleted

insert into admin_log values(@author,'刪除新聞',getdate())

end

else if not exists(select 1 from deleted) and exists(select1from inserted)begin /*是數據添加操作*/

DECLARE @author1 NVARCHAR(50)

select @author1=f_editer from inserted

insert into admin_log values(@author1,'添加新聞',getdate())

end

else if exists(select 1 from deleted) and exists(select 1 from inserted)

begin/*是數據更新操作*/

DECLARE @author2 NVARCHAR(50)

select @author2=f_editer from deleted

insert into admin_log values(@author2,'更新新聞',getdate())

end

以上觸發器的功能均已通過系統測試。

四、結束語

在系統開發過程中,觸發器設計可以保障后臺數據的完整性。當然,上述的功能也可以借助開發工具的前臺代碼實現,但是觸發器所帶來的系統開銷會更加小。觸發器是存儲在本地服務器上的,在執行時可以節省網絡傳輸過程中消耗的時間。而且,觸發器執行過程中如果出現任何情況的錯誤導致操作失敗,之前所做的一切都會恢復,因此它能最大程度的保證數據的完整性。

由此可見,合理地設計觸發器,既可以使數據更安全,又可以減少程序開發人員的勞動量。若能在程序開發中熟練地將觸發器和其他數據對象有機集合,將能大大提高程序執行的效率。

參考文獻:

[1]張峰,張莉莉.觸發器在數據處理過程中的應用研究[J].計算機工程與科學,2008(5):156-158.

[2]胡鶴年.SQL Server觸發器在數據庫設計中的應用[J].數據庫與信息管理,2012(8):37-38.

[3]劉春蕾.觸發器在數據庫編程中的應用[J].電腦開發與應用,2014(4):56-58.

[4]彭嬌.觸發器在Oracle數據庫中的應用研究[J].軟件導刊,2015(6):151-152.

責任編輯 何麗華

猜你喜歡
數據庫
數據庫
財經(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
主站蜘蛛池模板: 国产精品成人一区二区| 欧美在线中文字幕| 97精品久久久大香线焦| 欧洲精品视频在线观看| 免费无码AV片在线观看中文| 成年看免费观看视频拍拍| 国产精品夜夜嗨视频免费视频 | 中文字幕在线永久在线视频2020| 色AV色 综合网站| 国产主播喷水| 五月天婷婷网亚洲综合在线| 无码高清专区| 亚洲色精品国产一区二区三区| AV不卡国产在线观看| 国产成人凹凸视频在线| 找国产毛片看| 国产一区二区免费播放| 在线国产毛片| 谁有在线观看日韩亚洲最新视频| 天天操天天噜| 国产福利一区二区在线观看| 2021最新国产精品网站| a免费毛片在线播放| 毛片基地美国正在播放亚洲| 亚洲二区视频| 亚洲系列无码专区偷窥无码| 黄色免费在线网址| 日韩一二三区视频精品| 国产一级毛片在线| …亚洲 欧洲 另类 春色| 欧美国产日产一区二区| 国产麻豆另类AV| 人妻少妇久久久久久97人妻| 视频二区亚洲精品| 亚洲色图欧美激情| 高清视频一区| 国产精品亚洲欧美日韩久久| 久久久久免费看成人影片| 亚洲综合中文字幕国产精品欧美 | 亚洲综合一区国产精品| 精品福利网| 日本午夜在线视频| www.亚洲色图.com| 国产日韩欧美在线播放| 成人午夜视频在线| 婷婷成人综合| 在线观看亚洲人成网站| 操操操综合网| 国产成年女人特黄特色毛片免| 免费在线看黄网址| 中文成人无码国产亚洲| 成·人免费午夜无码视频在线观看| 久久伊伊香蕉综合精品| 在线网站18禁| 成人免费黄色小视频| 99久久成人国产精品免费| 女人18毛片水真多国产| 亚洲成人精品久久| 国产精品原创不卡在线| 亚洲国产精品美女| 四虎永久在线| 日韩av高清无码一区二区三区| 亚洲一区二区约美女探花| 22sihu国产精品视频影视资讯| 国产精品人成在线播放| 99热这里只有精品免费| 婷婷久久综合九色综合88| 久久久成年黄色视频| 欧美国产日韩在线| 91九色最新地址| 免费A级毛片无码免费视频| 久久性妇女精品免费| 亚洲综合九九| 91久久国产成人免费观看| 亚洲精品无码不卡在线播放| 免费观看国产小粉嫩喷水| 国产91特黄特色A级毛片| 亚洲爱婷婷色69堂| 欧美日韩福利| 国产日韩久久久久无码精品| 精品黑人一区二区三区| 伊人网址在线|