第5章數(shù)據(jù)庫完整性_第1頁
第5章數(shù)據(jù)庫完整性_第2頁
第5章數(shù)據(jù)庫完整性_第3頁
第5章數(shù)據(jù)庫完整性_第4頁
第5章數(shù)據(jù)庫完整性_第5頁
已閱讀5頁,還剩78頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、An Introduction to Database System1數(shù)據(jù)庫系統(tǒng)概論數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第五章第五章 數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性An Introduction to Database System2第五章第五章 數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性什么是數(shù)據(jù)庫的完整性n數(shù)據(jù)的正確性和相容性n防止不合語義的數(shù)據(jù)進入數(shù)據(jù)庫。例: 學生的年齡必須是整數(shù),取值范圍為14-29; 學生的性別只能是男或女; 學生的學號一定是唯一的; 學生所在的系必須是學校開設(shè)的系;n完整性:是否真實地反映現(xiàn)實世界An Introduction to Data

2、base System3數(shù)據(jù)庫的數(shù)據(jù)庫的完整性與安全性完整性與安全性的的區(qū)別和聯(lián)系區(qū)別和聯(lián)系n兩個不同的概念,但有一定的聯(lián)系;前者是為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息的輸入和輸出,既所謂的垃圾進垃圾出(Garbage in Garbage out)所造成的無效操作和錯誤結(jié)果;后者是保護數(shù)據(jù)庫防止惡意的破壞和非法存取;安全性措施防范的對象是非法用戶,完整性措施的防范對象是不合語義的數(shù)據(jù).An Introduction to Database System4完整性控制機制完整性控制機制1.完整性約束條件定義2.完整性檢查機制3.違約反應(yīng) An Introduction to Dat

3、abase System5完整性約束條件定義完整性約束條件定義n完整性約束條件:數(shù)據(jù)模型的組成部分,約束數(shù)據(jù)庫中數(shù)據(jù)的語義nDBMS應(yīng)提供定義數(shù)據(jù)庫完整性約束條件,并把它們作為模式的一部分存入數(shù)據(jù)庫字典中。An Introduction to Database System6完整性控制機制完整性控制機制n檢查用戶發(fā)出的操作請求是否違背了完整性約束條件 An Introduction to Database System7違約反應(yīng)違約反應(yīng)n如果發(fā)現(xiàn)用戶的操作請求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動作來保證數(shù)據(jù)的完整性。An Introduction to Database System8補

4、充:補充:完整性約束條件(續(xù))完整性約束條件(續(xù))完整性約束條件作用的對象n列:對屬性的取值類型、范圍、精度等的約束條件n元組:對元組中各個屬性列間的聯(lián)系的約束n關(guān)系:對若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束An Introduction to Database System9補充:補充:完整性約束條件(續(xù))完整性約束條件(續(xù))n靜態(tài)n對靜態(tài)對象的約束,是反映數(shù)據(jù)庫狀態(tài)合理性的約束n動態(tài)n對動態(tài)對象的約束,是反映數(shù)據(jù)庫狀態(tài)變遷的約束An Introduction to Database System10補充:完整性約束條件分類補充:完整性約束條件分類六類完整性約束條件n 靜態(tài)列級列級約

5、束n 靜態(tài)元組元組約束n 靜態(tài)關(guān)系關(guān)系約束n 動態(tài)列級列級約束n 動態(tài)元組元組約束n 動態(tài)關(guān)系關(guān)系約束An Introduction to Database System11補充:補充:完整性約束條件(續(xù))完整性約束條件(續(xù))1. 靜態(tài)列級約束n靜態(tài)列級約束:對的取值域的說明n最常見、最簡單、最容易實現(xiàn)的一類完整性約束An Introduction to Database System12補充:補充:完整性約束條件(續(xù))完整性約束條件(續(xù))n五類靜態(tài)列級約束1) 數(shù)據(jù)類型約束:數(shù)據(jù)的類型、長度、單位、精度等 例:學生姓名的數(shù)據(jù)類型為字符型,長度為82) 對數(shù)據(jù)格式的約束例: 學號:前兩位表示入

6、學年份,后四位為順序編號 日期:YY.MM.DD。An Introduction to Database System13補充:補充:完整性約束條件(續(xù))完整性約束條件(續(xù))3) 取值范圍或取值集合的約束例:規(guī)定成績的取值范圍為0-100 年齡的取值范圍為14-29 性別的取值集合為男,女4) 對空值的約束 空值:未定義或未知的值 空值:與零值和空格不同 有的列允許空值,有的則不允許,如成績可為空值5) 其他約束例:關(guān)于列的排序說明,組合列等An Introduction to Database System14補充:補充:完整性約束條件(續(xù))完整性約束條件(續(xù))2. 靜態(tài)元組約束 規(guī)定元組的

7、各個列之間的約束關(guān)系例:訂貨關(guān)系中發(fā)貨量=700元 靜態(tài)元組約束只局限在元組上 An Introduction to Database System15補充:補充:完整性約束條件(續(xù))完整性約束條件(續(xù))3. 靜態(tài)關(guān)系約束 關(guān)系的各個元組之間或若干關(guān)系之間存在的各種聯(lián)系或約束 常見靜態(tài)關(guān)系約束:1) 實體完整性約束2) 參照完整性約束3) 函數(shù)依賴約束4) 統(tǒng)計約束An Introduction to Database System16統(tǒng)計約束統(tǒng)計約束n定義某個字段值與一個關(guān)系多個元組的統(tǒng)計值之間的約束關(guān)系n例:職工平均工資的2倍=部門經(jīng)理的工資= 原來工資 年齡只能增長An Introduc

8、tion to Database System19完整性約束條件(續(xù))完整性約束條件(續(xù))5. 動態(tài)元組約束 修改元組值: 各個字段之間要滿足的約束條件例: 職工工資調(diào)整不得低于其原來工資 + 工齡*1.5An Introduction to Database System20完整性約束條件(續(xù))完整性約束條件(續(xù))6. 動態(tài)關(guān)系約束 關(guān)系變化前后狀態(tài):限制條件例:事務(wù)一致性、原子性等約束條件An Introduction to Database System21第五章 數(shù)據(jù)庫完整性5.1 實體完整性5.2 參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句5.5 域中的完整性限制5.

9、6 觸發(fā)器5.7 小結(jié)An Introduction to Database System225.1 實體完整性實體完整性5.1.1 實體完整性定義5.1.2 實體完整性檢查和違約處理An Introduction to Database System235.1.1 實體完整性定義實體完整性定義n實體完整性(Entity Integrity)若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值例SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)POSTGRADUATE屬性為主碼(假設(shè)研究生不會重名),則其不能取空值A(chǔ)n Introduction to Database

10、System245.1.1 實體完整性定義實體完整性定義關(guān)系模型必須遵守實體完整性規(guī)則的原因(1) 實體完整性規(guī)則是針對基本關(guān)系基本關(guān)系而言的。一個基本表通常對應(yīng)對應(yīng)現(xiàn)實世界的一個實體集或多對多聯(lián)系一個實體集或多對多聯(lián)系。(2) 現(xiàn)實世界中的實體和實體間的聯(lián)系都是可區(qū)分可區(qū)分的,即它們具有某種唯一性標識唯一性標識。(3) 相應(yīng)地,關(guān)系模型中以主碼作為唯一性標識主碼作為唯一性標識。(4) 主碼中的屬性即主屬性不能取空值屬性不能取空值。 空值就是“不知道”或“無意義”的值。 主屬性取空值,就說明存在某個不可標識的實體,即存在不可區(qū)分的實體,這與第(2)點相矛盾,因此這個規(guī)則稱為實體完整性。An I

11、ntroduction to Database System255.1.1 實體完整性定義實體完整性定義關(guān)系模型的實體完整性在Create table 中用 Primary Key定義。對單屬性的構(gòu)成的碼有兩種說明方法:n定義為列級約束條件n表級約束條件對多個屬性構(gòu)成的碼只有一種說明方法,即定義為表級約束條件An Introduction to Database System26例題1將Student表中的Sno屬性定義為碼。Create table student (Sno char(9) primary key,/*在列級定義主碼*/ Sname char(20) not null, Ss

12、ex char(2), Sage smallint, Sdept char(20) );5.1.1 實體完整性定義實體完整性定義An Introduction to Database System275.1.1 實體完整性定義實體完整性定義或者Create table student ( sno char(9), Sname char(20) not null, Ssex char(2), Sage smallint, Sdept char(20), primary key (sno) ,/*在表級定義主碼*/);An Introduction to Database System285.1.

13、1 實體完整性定義實體完整性定義例題2 將SC表中的Sno,Cno屬性組定義為碼 Create table SC ( Sno char(9) not null, Cno char(4) not null, grade smallint, Primary key (Sno,Cno) ,/*只能在表級定義主碼*/ );An Introduction to Database System295.1.2 實體完整性檢查和違約處理實體完整性檢查和違約處理n用primary key 短語定義了關(guān)系的主碼后,每當用戶程序?qū)颈聿迦胍粭l記錄或者對主碼列進行更新操作時,RDBMS將自動檢查:n檢查主碼值是否唯

14、一,如果不唯一則拒絕插入或修改。n檢查主碼的各個屬性是否為空,只要一個為空就拒絕插入或修改An Introduction to Database System305.1.2 實體完整性檢查和違約處理實體完整性檢查和違約處理n檢查主碼值是否唯一的方法(2種):n全表掃描keyif2if3if4if5ikey1f21f31f41f51key2f22f32f42f52key3f23f33f43f53.插入An Introduction to Database System315.1.2 實體完整性檢查和違約處理實體完整性檢查和違約處理n全表掃描缺點:n耗時第二種方法:建索引(如B+樹索引)nRDBM

15、S核心一般都在主碼上自動建立一個索引n通過索引查找基本表中是否存在新的主碼值 提高效率An Introduction to Database System325.1.2 實體完整性檢查和違約處理實體完整性檢查和違約處理例:255112 3066 7815 20 253 730 4168 69 71 7679 84 9351 54 65新插入記錄的主碼值新插入記錄的主碼值2525存在,不能插入An Introduction to Database System335.2 參照完整性參照完整性5.1 實體完整性實體完整性5.2 參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句5.5 域中

16、的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System345.2 參照完整性參照完整性5.2.1 參照完整性定義參照完整性定義5.2.2 參照完整性檢查和違約處參照完整性檢查和違約處An Introduction to Database System355.2.1 參照完整性定義參照完整性定義n關(guān)系模型的參照完整性在Create table中用foreign key 短語定義哪些列為外碼,用REFERENCES短語指明這些外碼參照哪些表的主碼。An Introduction to Database System365.2.1 參照完整性定義參

17、照完整性定義例題3 定義SC中的參考完整性。Create table sc (sno char(9) not null, cno char(4) not null, grade smallint, Primary key (sno,cno) , /*在表級定義實體完整性*/ foreign key (sno) references student(sno),/*在表級定義 參照完整性*/ foreign key (Cno) references Course (Cno),/*在表級定義 參照完整性*/ );An Introduction to Database System375.2.2 參照

18、完整性檢查和違約處理參照完整性將兩個表中的相應(yīng)元組聯(lián)系起來后。當進行增刪操作時有可能破壞參照完整性,必須進行檢查。An Introduction to Database System385.2.2 參照完整性檢查和違約處理n對SC和Students有4種可能破壞參照完整性的情況:nSC表中增加一個元組,該元組的Sno 屬性值在Students中找不到一個元組,其Sno屬性的值與之相等。n修改SC表中的一個元組,修改后該元組的Sno屬性的值在Students中找不到一個元組,其Sno屬性值與之相等。n從Students表中刪除一個元組,造成SC表中某些元組的Sno屬性值在Students中找不到

19、一個元組,其Sno屬性值與之相等。n修改Students表中的一個元組的Sno屬性,造成SC表中某些元組的Sno屬性值在Students中找不到一個元組,其Sno屬性值與之相等An Introduction to Database System39 表5.1 可能破壞參照完整性的情況及違約處理被參照表(Students)參照表(例如SC)違約處理可能破壞參照完整性插入元組拒絕可能破壞參照完整性修改外碼值拒絕刪除元組可能破壞參照完整性拒絕/級聯(lián)刪除/設(shè)置為空修改主碼值可能破壞參照完整性拒絕/級聯(lián)刪除/設(shè)置為空5.2.2 參照完整性檢查和違約處理(續(xù))An Introduction to Data

20、base System40處理策略處理策略1、拒絕(No action)執(zhí)行不允許該操作執(zhí)行。該策略一般為默認策略。2、級聯(lián)(Cascade)操作當刪除或修改被參照表(Students)的一個元組造成了與參照表(SC)的不一致,則刪除或修改參照表中的所有造成不一致的元組。例如,刪除Students表中的元組,Sno值為200215121則要從SC表中級聯(lián)刪除SC.Sno= 200215121的所有元組。An Introduction to Database System41處理策略處理策略3、設(shè)置空值(Set-Null)例如:學生(學號,姓名,性別,專業(yè)號專業(yè)號,年齡) 專業(yè)(專業(yè)號,專業(yè)名)

21、 假設(shè)專業(yè)表(被參照表)中專業(yè)號=12的元組被刪除,則學生表(參照表)中專業(yè)號=12的所有元組的專業(yè)號設(shè)置為空值 但在學生-選課數(shù)據(jù)庫中,Students關(guān)系為被參照關(guān)系,其主碼為Sno,SC為參考關(guān)系,Sno為外碼。若SC的Sno為空值,則表明。外碼是否允許為空值?An Introduction to Database System42處理策略處理策略 若違反了參照完整性,系統(tǒng)選用默認策略,即拒絕執(zhí)行。 如果想讓系統(tǒng)采用其他策略則必須在創(chuàng)建表的時候顯式地加以說明。An Introduction to Database System43例題例題4 顯式說明參照完整性的違約處理顯式說明參照完整性

22、的違約處理Create table SC ( sno char(9) not null, cno char(4) not null, grade smallint, Primary key (sno,cno) , /*在表級定義實體完整性*/ foreign key (sno) references student(sno), /*在表級定義參照完整性*/ on delete cascade, /*當刪除當刪除student表中的元組時,級聯(lián)刪除表中的元組時,級聯(lián)刪除SC表中的相應(yīng)元組表中的相應(yīng)元組*/ on update cascade, /*當更新當更新student表中的表中的Sno時,

23、級聯(lián)更新時,級聯(lián)更新SC表中的相應(yīng)元組表中的相應(yīng)元組*/ foreign key (sno) references courses(sno), /*在表級定義參照完整性*/ on delete no Action,/*當刪除當刪除courses表中的元組時造成了與表中的元組時造成了與SC表不一致拒絕刪除表不一致拒絕刪除*/ on update cascade,/*當更新當更新courses表中的表中的Cno時,級聯(lián)更新時,級聯(lián)更新SC表中的相應(yīng)元組表中的相應(yīng)元組*/ );An Introduction to Database System44第五章 數(shù)據(jù)庫完整性5.1 實體完整性5.2 參照完

24、整性5.3 用戶定義完整性5.4 完整性約束命名子句5.5 域中的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System455.3 用戶定義完整性5.3.1 屬性上的約束條件的定義屬性上的約束條件的定義5.3.2 屬性上的約束條件檢查和違約處理屬性上的約束條件檢查和違約處理5.3.3 元組上的約束條件的定義元組上的約束條件的定義5.3.4 元組上的約束條件檢查和違約處理元組上的約束條件檢查和違約處理An Introduction to Database System465.3.1 屬性上的約束條件的定義n屬性值的限制,包括:n列值非空(Not

25、null 短語)n列值唯一(unique短語)n檢查列值是否滿足一個布爾表達式(Check 短語)An Introduction to Database System475.3.1 屬性上的約束條件的定義1、不允許取空值例題5 在定義SC表時,說明Sno,Cno,Grade屬性不允許取空值。Create table SC ( Sno char(9) not null, Cno char(40) not null, Grade smallint not null, Primary key (Sno, Cno), )An Introduction to Database System485.3.1

26、 屬性上的約束條件的定義2、列值唯一例題6 建立部門表Dept ,要求部門名稱Dname 列取值唯一,部門編號Deptno列為主碼。Create table dept ( Deptno numeric(2), Dname char(9) nuique, Location char(10), Primary key (Deptno) );An Introduction to Database System495.3.1 屬性上的約束條件的定義3、用Check 短語指定列值應(yīng)該滿足的條件例題7 Student 表的Ssex只允許取“男”或“女”。Create table Students ( Sn

27、o char (9) primary key, Snome char(8) not null, Ssex char(2) check (Ssex IN (男,女), Sage smallint, Sdept Char(20) )An Introduction to Database System505.3.1 屬性上的約束條件的定義例題8 SC表的Grade 的值應(yīng)該在0和100之間。Create table SC ( Sno char(9) not null, Cno char(4) not null, Grade smallint Check (Grade =0 and Grade =10

28、0), primary key (Sno,Cno), Foreign key (Sno) references Student(Sno), Foreign key (Cno) references Course (Cno) );An Introduction to Database System515.3 用戶定義完整性5.3.1 屬性上的約束條件的定義屬性上的約束條件的定義5.3.2 屬性上的約束條件檢查和違約處理屬性上的約束條件檢查和違約處理5.3.3 元組上的約束條件的定義元組上的約束條件的定義5.3.4 元組上的約束條件檢查和違約處理元組上的約束條件檢查和違約處理An Introduc

29、tion to Database System525.3.2 屬性上的約束條件檢查和違約處理n當往表中插入元組或修改屬性的值時,RDBMS就檢查屬性上的約束條件是否被滿足,否則拒絕執(zhí)行。An Introduction to Database System535.3 用戶定義完整性5.3.1 屬性上的約束條件的定義屬性上的約束條件的定義5.3.2 屬性上的約束條件檢查和違約處理屬性上的約束條件檢查和違約處理5.3.3 元組上的約束條件的定義元組上的約束條件的定義5.3.4 元組上的約束條件檢查和違約處理元組上的約束條件檢查和違約處理An Introduction to Database Syst

30、em545.3.3 元組上的約束條件的定義n與屬性上約束條件的定義類似,在Create 語句中可以用Check短語定義元組上的約束條件,即元組級的限制。例題9 當學生的性別是男時,其名字不能以Ms. 打頭。Create table Student ( Sno char(9), Sname char (8) not null, Ssex char(2), Sage smallint, Sdept char(20), Primary key(Sno), check (Sex=女 or Sname not like Ms.%) );An Introduction to Database System

31、555.3 用戶定義完整性5.3.1 屬性上的約束條件的定義屬性上的約束條件的定義5.3.2 屬性上的約束條件檢查和違約處理屬性上的約束條件檢查和違約處理5.3.3 元組上的約束條件的定義元組上的約束條件的定義5.3.4 元組上的約束條件檢查和違約處理元組上的約束條件檢查和違約處理An Introduction to Database System565.3.4 元組上的約束條件檢查和違約處理n當往表中插入元組或修改屬性的值時,RDBMS就檢查屬性上的約束條件是否被滿足,否則拒絕執(zhí)行。An Introduction to Database System57第五章 數(shù)據(jù)庫完整性5.1 實體完整性

32、5.2 參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句完整性約束命名子句5.5 域中的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System585.4 完整性約束命名子句1、完整性約束命令子句語法:Constraintprimary key短語|foreign key 短語|check 短語作用:靈活地增加、刪除一個完整性約束條件。An Introduction to Database System595.4 完整性約束命名子句例題10 建立學生登記表Students,要求學號在90 00099 999之間,姓名不能取空值,年齡小于

33、30,性別只能是“男”或“女”。Create table Students ( Sno numeric(6) constraint C1 check (Sno between 90000 and 99999), Sname char(20) constraint C2 not null, Sage numeric(3) constraint C3 check (Sage=3000) );An Introduction to Database System615.4 完整性約束命名子句2. 修改表中的完整性限制使用Alter table語句例題12 去掉例題10 Students表中對性別的限制

34、。Alter table student Drop constraint C4An Introduction to Database System625.4 完整性約束命名子句例題13 修改表 Students表中的約束條件,要求學號改為800 000 999 999之間,年齡小于30改為45。先刪除原來的約束條件,再增加新的約束條件先刪除原來的約束條件,再增加新的約束條件。Alter table students Drop constraint C1;Alter table students Add constraint C1 check (Sno between 800000 and 99

35、9999),Alter table students Drop constraint C3;Alter table students Add constraint C3 check (Sage 45);An Introduction to Database System63第五章 數(shù)據(jù)庫完整性5.1 實體完整性5.2 參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句完整性約束命名子句5.5 域中的完整性限制域中的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System645.5 域中的完整性限制n命令:CREATE DOMAIN 建立一

36、個域以及該域應(yīng)該滿足的完整性約束條件。例14 建立一個性別域,并聲明性別域的取值范圍CREATE DOMAIN GenderDomain CHAR(2)CHECK (VALUE IN(男,女);這樣例10中對Ssex的說明可以改寫為Ssex GenderDomainAn Introduction to Database System655.5 域中的完整性限制(續(xù))例15 建立一個性別域GenderDomain,并對其中的限制命名。CREATE DOMAIN GenderDomain CHAR(2)CONSTRAINT GD CHECK (VALUE IN (男,女);例16 刪除域Gende

37、rDomain的限制條件GD。ALTER DOMAIN GenderDomainDROP CONSTRAINT GD;An Introduction to Database System665.5 域中的完整性限制(續(xù))例17 在域GenderDomain上增加限制條件GDD。ALTER DOMAIN GenderDomainADD CONSTRAINT GDD CHECK (VALUE IN (1,0);這樣,通過例16和例17,就把性別的取值范圍由(男,女)改為(1,0)。An Introduction to Database System67第五章 數(shù)據(jù)庫完整性5.1 實體完整性5.2

38、參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句5.5 域中的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System685.6 觸發(fā)器5.6.1 定義觸發(fā)器定義觸發(fā)器5.6.2 激活觸發(fā)器5.6.3 刪除觸發(fā)器An Introduction to Database System695.6.1 定義觸發(fā)器(續(xù))1、觸發(fā)器(Trigger): 定義在關(guān)系表上的一類由事件驅(qū)動的特殊存儲過程。一旦定義,任何對表的增、刪、改的操作,系統(tǒng)都自動激活相應(yīng)的觸發(fā)器。 例:不及格門數(shù)預(yù)警。當不及格門數(shù)達到一定數(shù)時,系統(tǒng)自動激活一個過程,給學生打印預(yù)警通

39、知單。 例:當奧運門票第1,000,000張的幸運觀眾產(chǎn)生時,并贈送紀念品。滿足兩個要求: 1)指明什么事件發(fā)生和滿足什么條件時執(zhí)行觸發(fā)器; 2)指明觸發(fā)器執(zhí)行什么樣的動作。An Introduction to Database System705.6.1 定義觸發(fā)器(續(xù))2、格式Create trigger Before |After on For each Row|Statement When An Introduction to Database System71 5.6.1 定義觸發(fā)器(續(xù)) 例題例題18 18 定義一個定義一個Before Before 行級觸發(fā)器,為教師表行級觸發(fā)器

40、,為教師表TeacherTeacher定義完定義完整性規(guī)則整性規(guī)則“教授的工資不得低于教授的工資不得低于40004000元,如果低于元,如果低于40004000元,自動元,自動改為改為40004000元元”。Create trigger Inser_or_Create trigger Inser_or_Update_Sal _Sal /*在教師表在教師表Teacher上定義上定義觸發(fā)器觸發(fā)器*/ Before insert or update on teacher Before insert or update on teacher*觸發(fā)事件是插入或更新觸發(fā)事件是插入或更新操作操作*/For

41、each row For each row /*這是行級觸發(fā)器這是行級觸發(fā)器*/ As begin As begin /*定義觸發(fā)動作體定義觸發(fā)動作體*/ If (new.Job= If (new.Job=教授教授 ) and (new.Sal4000) Then ) and (new.Sal4000) Then new.sal:=4000; new.sal:=4000; End If; End If;EndEnd; /*觸發(fā)動作體結(jié)束觸發(fā)動作體結(jié)束*/An Introduction to Database System72 5.6.1 定義觸發(fā)器(續(xù))例題19 定義一個After 行級觸發(fā)器

42、,當教師表Teacher的工資發(fā)生變化后就自動在工資變化表Sal_log中增加一條相應(yīng)紀錄。Create table Sal_log(Eno numric(4) reference teacher(eno), Sal numric(7,2), Username char(10), Date timestamp );An Introduction to Database System73 5.6.1 定義觸發(fā)器(續(xù))Create trigger insert_SalCreate trigger insert_Sal/*建立了一個觸發(fā)器建立了一個觸發(fā)器*/ After After insert i

43、nsert on teacheron teacherFor each rowFor each rowAs begin As begin insert into Sal_log values( insert into Sal_log values( new.Eno,new.Sal,Current_user,Current_Timestamp);new.Eno,new.Sal,Current_user,Current_Timestamp); End End;Create trigger Update_SalCreate trigger Update_Sal/*建立了一個觸發(fā)器建立了一個觸發(fā)器*/ After After update update on teacheron teacherFor each rowFor each rowAs begin As b

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論