第五部分?jǐn)?shù)據(jù)庫完整教學(xué)課件_第1頁
第五部分?jǐn)?shù)據(jù)庫完整教學(xué)課件_第2頁
第五部分?jǐn)?shù)據(jù)庫完整教學(xué)課件_第3頁
第五部分?jǐn)?shù)據(jù)庫完整教學(xué)課件_第4頁
第五部分?jǐn)?shù)據(jù)庫完整教學(xué)課件_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第五章第五章 數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性v 數(shù)據(jù)是數(shù)據(jù)庫的核心,數(shù)據(jù)的正確和完整與否將直接影響數(shù)據(jù)庫的使用。v 數(shù)據(jù)的完整性完整性和安全性安全性是兩個(gè)不同概念; 數(shù)據(jù)的安全性保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取防范對(duì)象:非法用戶和非法操作 數(shù)據(jù)的完整性防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),也就是防止數(shù)據(jù)庫中存在不正確的數(shù)據(jù)防范對(duì)象:不合語義的、不正確的數(shù)據(jù)本次課內(nèi)容本次課內(nèi)容一數(shù)據(jù)完整性概述二在sql server 2005中實(shí)現(xiàn)數(shù)據(jù)完整性三其他相關(guān)知識(shí)觸發(fā)器v1、dbms必須能夠提供 提供定義完整性約束條件的機(jī)制提供定義完整性約束條件的機(jī)制 完整性約束條件 = = 完整性規(guī)

2、則,由sql的ddl語句來實(shí)現(xiàn); 提供完整性檢查的機(jī)制提供完整性檢查的機(jī)制 檢查數(shù)據(jù)是否滿足完整性約束條件的機(jī)制; 違約處理違約處理 若用戶操作違反完整性約束條件,采取一定的動(dòng)作,如拒絕執(zhí)行(no action)、級(jí)聯(lián)執(zhí)行或其他操作;一、數(shù)據(jù)庫完整性概述一、數(shù)據(jù)庫完整性概述v2、數(shù)據(jù)庫完整性約束機(jī)制分類完整性約束條件作用的對(duì)象有關(guān)系、元組、列三種;可分為: 實(shí)體完整性實(shí)體完整性:實(shí)體完整性是為了保證表中的數(shù)據(jù)唯一; 參照完整性:參照完整性:參照完整性用于確保相關(guān)聯(lián)的表間的數(shù)據(jù)應(yīng)保持一致,避免因一個(gè)表的記錄修改,造成另一個(gè)表的內(nèi)容變?yōu)闊o效的值一般來說,參照完整性是通過外鍵和主鍵來維護(hù)的; 域完整

3、性:域完整性:域完整性可以保證數(shù)據(jù)的取值在有效的范圍內(nèi); 用戶定義完整性:用戶定義完整性:由用戶自行定義的,不同于前面種的完整性,也可以說一種強(qiáng)制數(shù)據(jù)定義;1)實(shí)體完整性)實(shí)體完整性v 實(shí)體(entity):是數(shù)據(jù)邏輯模型中的一個(gè)概念?,F(xiàn)實(shí)世界是一組實(shí)體的基本對(duì)象和這些對(duì)象的聯(lián)系(relation)構(gòu)成的。在數(shù)據(jù)庫中,我們可以理解一條記錄就是一個(gè)實(shí)體。v 實(shí)體完整性:在現(xiàn)實(shí)世界中,任何一個(gè)實(shí)體都有區(qū)別于其他實(shí)任何一個(gè)實(shí)體都有區(qū)別于其他實(shí)體的特征體的特征,即在數(shù)據(jù)庫中,所有的記錄都應(yīng)該有惟一的標(biāo)識(shí),這就是實(shí)體完整性的含義(規(guī)則2.1:實(shí)體完整性規(guī)則)。v 常見的實(shí)體完整性機(jī)制包括: 主鍵(pri

4、mary key);惟一碼(unique);2)參照完整性)參照完整性v 參照完整性是指在兩個(gè)表的主鍵和外鍵之間數(shù)據(jù)的完整性,其含義包括: 參照完整性保證被參照表和參照表之間數(shù)據(jù)的一致性; 可以防止數(shù)據(jù)丟失或者無意義的數(shù)據(jù); 可以禁止在從表中插入被參照表中不存在的關(guān)鍵字的記錄。v 參照完整性的常見實(shí)現(xiàn)機(jī)制包括: 外鍵(foreign key)、檢查(check)、觸發(fā)器(trigger);存儲(chǔ)過程(stored procedure)v 在輸入或刪除記錄時(shí),可以用來保持所有表之間定義的關(guān)系,以確保鍵值在所有表中一致。v 關(guān)系模型的參照完整性定義 在create table中用foreign ke

5、y短語定義哪些列為外碼 用references短語指明這些外碼參照哪些表的主碼3)域完整性)域完整性v 域:指列(字段),所以域完整性就是指列的完整性;v 域完整性要求列(字段)的數(shù)據(jù)具有正確的數(shù)據(jù)類型、格式和有效的數(shù)值范圍。v 域完整性的常見實(shí)現(xiàn)機(jī)制包括: 默認(rèn)值(default) 檢查(check) 數(shù)據(jù)類型(data type) 規(guī)則(rule)4)用戶自定義完整性)用戶自定義完整性v 用戶定義的完整性就是針對(duì)某一具體應(yīng)用的數(shù)據(jù)必須滿足的語義要求;可直接由rdbms提供,而不必由應(yīng)用程序承擔(dān);系統(tǒng)將實(shí)現(xiàn)數(shù)據(jù)完整性的要求直接定義在表上或列上。v 常見的實(shí)現(xiàn)機(jī)制包括: 規(guī)則(rule)、創(chuàng)建

6、數(shù)據(jù)表時(shí)的所有約束(constraint)、觸發(fā)器(trigger)、存儲(chǔ)過程(stored produre);二、在二、在sql server 2005中實(shí)現(xiàn)數(shù)據(jù)完整性中實(shí)現(xiàn)數(shù)據(jù)完整性vsql server 2005提供了完善的數(shù)據(jù)完整性機(jī)制,主要包括約束、默認(rèn)值和規(guī)則3類; 創(chuàng)建及管理約束及約束對(duì)象 默認(rèn)值約束及默認(rèn)值對(duì)象 創(chuàng)建及管理規(guī)則對(duì)象1、創(chuàng)建及管理約束及約束對(duì)象、創(chuàng)建及管理約束及約束對(duì)象v 主鍵primary key約束v 惟一值unique約束v 外鍵foreign key約束v 檢查check約束1)創(chuàng)建及刪除主鍵約束及惟一值約束)創(chuàng)建及刪除主鍵約束及惟一值約束v單屬性構(gòu)成的碼

7、的兩種說明方法單屬性構(gòu)成的碼的兩種說明方法 :定義為列級(jí)約束條件,定義為表級(jí)約束條件v多個(gè)屬性構(gòu)成的碼只有一種說明方法多個(gè)屬性構(gòu)成的碼只有一種說明方法:定義為表級(jí)約束條件創(chuàng)建約束方式:i.創(chuàng)建表時(shí)同時(shí)創(chuàng)建primary key約束或unique約束ii.修改表時(shí)同時(shí)創(chuàng)建primary key約束或unique約束i)創(chuàng)建表時(shí)同時(shí)創(chuàng)建)創(chuàng)建表時(shí)同時(shí)創(chuàng)建primary key約束或約束或unique約束約束v 語法結(jié)構(gòu):create table table_name(column_name data_type (null| not null) constraint constraint_name

8、primary key | unique, .n例例1:定義數(shù)據(jù)表:定義數(shù)據(jù)表student時(shí),為學(xué)號(hào)時(shí),為學(xué)號(hào)sno字段創(chuàng)建主鍵約束,對(duì)字段創(chuàng)建主鍵約束,對(duì)姓名姓名sname字段定義惟一值約束;字段定義惟一值約束;方法1:在列級(jí)定義主碼use stucreate table student(sno char(9) constraint sno_pk primary key,sname char(8) constraint sname_uk unique,ssex char(2) ,sage smallint ,sdept varchar(20))方法2:在表級(jí)定義主碼create table

9、 student (sno char(9) , sname char(20) , ssex char(2) , sage smallint, sdept char(20), primary key (sno) )實(shí)體完整性檢查:v 插入或?qū)χ鞔a列進(jìn)行更新操作時(shí),rdbms按照實(shí)體完整性規(guī)則自動(dòng)進(jìn)行檢查。包括: 1. 檢查主碼值是否唯一,如果不唯一則拒絕插入或修改 2. 檢查主碼的各個(gè)屬性是否為空,只要有一個(gè)為空就拒絕插入或修改檢查方法:全表掃描、索引ii)通過修改表時(shí)同時(shí)創(chuàng)建)通過修改表時(shí)同時(shí)創(chuàng)建primary key約束或約束或unique約束約束v 語法格式:alter table tab

10、le_nameadd constraint constraint_name primary key | unique(column ,.n)例例1:對(duì)數(shù)據(jù)表:對(duì)數(shù)據(jù)表student學(xué)號(hào)學(xué)號(hào)sno字段添加主鍵約束,對(duì)學(xué)生姓名字段添加主鍵約束,對(duì)學(xué)生姓名添加惟一值約束;添加惟一值約束;alter table studentadd constraint sno_pk primary key snoalter table studentadd constraint sname_uk unique sname刪除刪除primary key約束或約束或unique約束約束v 語法格式:alter tabl

11、e table_namedrop constraint constraint_name , .n例例1:刪除:刪除student中的主鍵約束和惟一值約束中的主鍵約束和惟一值約束alter table studentdrop constraint sno_pk,sname_ukv 查看主鍵約束的定義文本exec sp_helptext v 查看表中主鍵約束exec sp_helpconstraint v 查看數(shù)據(jù)庫中所有主鍵約束select name from sysobjects where type=k備注: k:primary key或unique約束;f:foreign keyc:che

12、ck約束;d:默認(rèn)值;r:規(guī)則;tr:觸發(fā)器;u:用戶表; v:視圖2)創(chuàng)建及管理外鍵約束)創(chuàng)建及管理外鍵約束v 對(duì)于兩個(gè)相關(guān)聯(lián)的表(主表與從表)進(jìn)行數(shù)據(jù)插入和刪除時(shí),通過參照完整性保證他們之間數(shù)據(jù)的一致性。v 利用foreign key定義從表的外碼,primary key或者unique定義主表中的主碼或惟一碼(不允許為空),可實(shí)現(xiàn)主表與從表之間的參照完整性。v 定義表間參照關(guān)系:先定義主表主碼(或惟一碼),再對(duì)從表定義外碼約束。可能破壞參照完整性的情況及違約處理被參照表(例如student)參照表(例如sc)違約處理可能破壞參照完整性 插入元組拒絕可能破壞參照完整性 修改外碼值拒絕刪除元

13、組 可能破壞參照完整性拒絕/級(jí)連刪除/設(shè)置為空值修改主碼值 可能破壞參照完整性拒絕/級(jí)連修改/設(shè)置為空值v 當(dāng)主碼外碼發(fā)生不一致時(shí),系統(tǒng)可采取以下策略: 1. 拒絕(no action)執(zhí)行 默認(rèn)策略 2. 級(jí)聯(lián)(cascade)操作 3. 設(shè)置為空值(set-null) 對(duì)于參照完整性,除了應(yīng)該定義外碼,還應(yīng)定義外碼列是否允許空值i)創(chuàng)建表時(shí)同時(shí)定義foreign key約束v 語法格式:create table table_name(column_name data_type foreign keyrefernces ref_table(ref_column) on delete casc

14、ade | no action -cascade表示主從表刪除時(shí)一致,進(jìn)行級(jí)聯(lián)刪除-no action 表示回滾主表的刪除操作,為默認(rèn)設(shè)置 on update cascade | no action-主從表更新時(shí)一致, .n )-n表示可定義多個(gè)字段例例1:在數(shù)據(jù)庫:在數(shù)據(jù)庫stu中創(chuàng)建主表中創(chuàng)建主表student和和course,主鍵分別為,主鍵分別為sno和和cno,創(chuàng)建從表,創(chuàng)建從表sc,sc.sno為外碼,與數(shù)據(jù)表為外碼,與數(shù)據(jù)表student主鍵主鍵對(duì)應(yīng),當(dāng)對(duì)主表進(jìn)行更新或刪除操作時(shí),對(duì)從表采用級(jí)聯(lián)操作;對(duì)應(yīng),當(dāng)對(duì)主表進(jìn)行更新或刪除操作時(shí),對(duì)從表采用級(jí)聯(lián)操作;o為外碼,與數(shù)據(jù)表為外碼

15、,與數(shù)據(jù)表course主鍵對(duì)應(yīng),當(dāng)對(duì)主表進(jìn)行更新主鍵對(duì)應(yīng),當(dāng)對(duì)主表進(jìn)行更新或刪除操作時(shí),對(duì)從表采用或刪除操作時(shí),對(duì)從表采用no action方式。方式。use stucreate table student(sno char(9) primary key,sname)create table course (cno char(4) primary key,sname)create table sc(sno char(9) foreign key references student(sno) on delete cascade on update cascade,cno char(4) for

16、eign key references course(cno) on delete no action on update no action ,grade smallint )ii)通過修改表定義foreign key約束v 語法格式:alter table table_nameadd constraint constraint_nameforeign key (column,n)refernces ref_table(ref_column ,n) on delete cascade | no action on update cascade | no action例例1:假設(shè)數(shù)據(jù)庫:假設(shè)數(shù)

17、據(jù)庫stu中中student和和course為主表,主鍵分別為為主表,主鍵分別為sno和和cno, sc為從表,將為從表,將sc.sno定義為外碼。定義為外碼。use stualter table scadd constraint sc_fk foreign key sno references student(sno) v iii)刪除表間的參照關(guān)系刪除表間的參照關(guān)系,刪除從表的外碼約束即可;語法格式:alter table table_namedrop constraint constraint_name ,niv)查看外鍵約束sp_helptext 、sp_helpconstraint、

18、select name from sysobjects where type=f3)創(chuàng)建及刪除檢查約束)創(chuàng)建及刪除檢查約束v 對(duì)插入列中的值進(jìn)行限制,以強(qiáng)制域的完整性;v 該約束在執(zhí)行insert語句或update時(shí)起作用;v 使用該約束可實(shí)現(xiàn)當(dāng)用戶在向表中插入或更新數(shù)據(jù)時(shí),由sql server檢查新行中的帶有該約束的列值使其必須滿足約束條件。v check約束作用域 單列:列級(jí)check約束 多列:表級(jí)check約束i)創(chuàng)建數(shù)據(jù)表時(shí)創(chuàng)建檢查)創(chuàng)建數(shù)據(jù)表時(shí)創(chuàng)建檢查check約束約束語法格式:create table table_name(column_name data_type (null

19、|not null) constraint check_name check (logical_expression),n )例例1:定義:定義student表,并限定表,并限定ssex只允許取只允許取男男或或女女;create table student( sno char(9) primary key,sname char(8),ssex char(2) check (ssex in (男,女) ,sage smallint ,sdept varchar(20))v 例例2:在定義:在定義student中,要求男生的年齡在中,要求男生的年齡在1525歲之間,女生的歲之間,女生的年齡在年齡在

20、1524歲之間;歲之間;create table student (sno char(9) primary key,sname char(8),ssex char(2), sage smallint, sdept varchar(20),check(sage=15 and ( (ssex=男 and sage=25) or (ssex=女 and sage=0 and sage=100) 例例2:在表:在表student的列的列sno上添加一個(gè)上添加一個(gè)check約束,要求學(xué)號(hào)必約束,要求學(xué)號(hào)必須由須由9個(gè)數(shù)字字符組成,并且不等于個(gè)數(shù)字字符組成,并且不等于0000000000.alter ta

21、ble studentadd constraint sno_ckcheck (sno like 0-9 0-9 0-9 0-9 0-9 0-9 0-9 0-9 0-9 and sno000000000)iii)查看約束的定義信息)查看約束的定義信息v 查看約束的定義文本exec sp_helptext v 查看表中約束exec sp_helpconstraint v 查看數(shù)據(jù)庫中所有約束select name from sysobjects where type=c例1:查看表student上約束sno_ck的定義文本use stuexec sp_helptext sno_ckgo例2:查看數(shù)

22、據(jù)庫stu中所有的check約束 use stu select name from sysobjects where type=civ)刪除檢查check約束語法格式:alter table table_namedrop constraint check_name例1:刪除數(shù)據(jù)表student中sno字段的check約束alter table studentdrop constraint sno_ck2、默認(rèn)值約束、默認(rèn)值約束v 默認(rèn)值約束的作用:就是當(dāng)用戶沒有為定義為default約束的字段輸入數(shù)據(jù)時(shí), 由default 約束提供默認(rèn)的數(shù)據(jù)。v 默認(rèn)值對(duì)象:作為一種單獨(dú)的數(shù)據(jù)庫對(duì)象,它是獨(dú)立

23、于表的,刪除表并不能刪除默認(rèn)值,而是需要使用drop default命令才能刪除。v 對(duì)于某些字段,可在程序中指定默認(rèn)值,以方便用戶,一個(gè)字段默認(rèn)值的建立可通過如下兩種方式實(shí)現(xiàn): 在定義表或修改表時(shí),定義默認(rèn)值約束; 先定義默認(rèn)值對(duì)象,然后將對(duì)象綁定到表的相應(yīng)字段;1)在表中定義及刪除默認(rèn)值約束)在表中定義及刪除默認(rèn)值約束v默認(rèn)值約束的定義 1)定義表時(shí)定義字段的默認(rèn)值約束 2)修改表時(shí)添加一個(gè)字段的同時(shí)定義相應(yīng)約束 3)對(duì)表中指定的列定義默認(rèn)值v默認(rèn)值約束的刪除i)定義表時(shí)定義字段的默認(rèn)值約束)定義表時(shí)定義字段的默認(rèn)值約束v 定義默認(rèn)值約束語法格式:create table table_na

24、me( column_name datatype not null / null constraint constraint_name default (constraint_expression),n-參數(shù)n表示可定義多個(gè)數(shù)據(jù)字段)-定義列名、數(shù)據(jù)類型、是否空值及默認(rèn)值約束例1:定義數(shù)據(jù)表student中字段ssex的默認(rèn)值為女;create table student (sno char(9) primary key, sname char(8) not null, ssex char(2) default (女) , sage smallint, sdept char(20) )ii)修

25、改表時(shí)添加一個(gè)字段的同時(shí)定義相應(yīng)約束)修改表時(shí)添加一個(gè)字段的同時(shí)定義相應(yīng)約束v 修改默認(rèn)值約束語法格式:alter table table_name( add column column_name datatype not null | nullconstraint constraint_name -指定約束名 default (constraint_expression) with values -默認(rèn)值約束表達(dá)式 -with values 僅用于在對(duì)表添加新字段的情況下) 例2:在數(shù)據(jù)表student中添加字段入學(xué)日期ruxue_date,默認(rèn)值為當(dāng)前日期;alter table stud

26、entadd ruxue_date smalldatetime null constraint date default getdate() with valuesiii)對(duì)表中指定的列定義默認(rèn)值約束)對(duì)表中指定的列定義默認(rèn)值約束v 語法格式:alter table table_name( add constraint constraint_name -指定約束名 default constraint_expression -默認(rèn)值約束表達(dá)式for column)例3:為數(shù)據(jù)表sc中字段grade添加默認(rèn)值為0;alter table scadd constraint grade_defaul

27、tdefault 0for gradeiv)默認(rèn)值約束的刪除)默認(rèn)值約束的刪除v 語法格式:alter table table_namedrop constraint constraint_name -刪除指定約束名例1:刪除表sc中字段grade的默認(rèn)值;alter table scdrop constraint grade_default三、其他知識(shí)三、其他知識(shí)v規(guī)則v觸發(fā)器1、創(chuàng)建及管理規(guī)則對(duì)象、創(chuàng)建及管理規(guī)則對(duì)象v 規(guī)則:對(duì)錄入數(shù)據(jù)列中的數(shù)據(jù)所實(shí)施的完整性約束條件,它指定了插入到數(shù)據(jù)列中的可能值。v 規(guī)則是sql server 2005數(shù)據(jù)庫中獨(dú)立于表和視圖的數(shù)據(jù)對(duì)象,與其作用的表是獨(dú)

28、立的,刪除表時(shí)不會(huì)刪除規(guī)則。v 規(guī)則就相當(dāng)于數(shù)據(jù)表的數(shù)據(jù)驗(yàn)收員,當(dāng)插入或修改的數(shù)據(jù)放入數(shù)據(jù)表時(shí),它就檢查數(shù)據(jù)是否符合要求,符合要求的放入數(shù)據(jù)表,不符合的拒之門外。這樣就保證了放入數(shù)據(jù)表的數(shù)據(jù)是正確的。v 如果列同時(shí)有與之相關(guān)聯(lián)的默認(rèn)值和規(guī)則,則默認(rèn)值必須在規(guī)則定義的范圍內(nèi)。與規(guī)則沖突的默認(rèn)值永遠(yuǎn)不能被插入。1)定義規(guī)則對(duì)象)定義規(guī)則對(duì)象v 規(guī)則對(duì)象的使用方法與默認(rèn)值對(duì)象使用步驟類型; 定義規(guī)則對(duì)象 將規(guī)則對(duì)象綁定到列或用戶自定義類型v 定義規(guī)則對(duì)象的語法結(jié)構(gòu)create rule rule as condition_expressionv 將規(guī)則對(duì)象綁定到自定義類型或列語法格式:sp_bind

29、rule rulename = rule , objname = object_name , futureonly = futureonly_flag 例例1:創(chuàng)建一個(gè)規(guī)則,用于指定性別為:創(chuàng)建一個(gè)規(guī)則,用于指定性別為男男或者或者女女,并綁定,并綁定到數(shù)據(jù)表到數(shù)據(jù)表student的的ssex字段。字段。 create rule ssex_ruleas sex =男 or sex =女exec sp_bindrule ssex_rule , student.ssex例例2:創(chuàng)建一個(gè)規(guī)則,用于指定學(xué)號(hào)首位以:創(chuàng)建一個(gè)規(guī)則,用于指定學(xué)號(hào)首位以1-9開頭,其他位以開頭,其他位以0-9結(jié)尾,并綁定到數(shù)據(jù)

30、表結(jié)尾,并綁定到數(shù)據(jù)表student的的sno字段。字段。create rule sno_ruleas num like 1-90-90-9 0-9 0-9 0-9 0-9 0-9 0-9exec sp_bindrule sno_rule , student.sno2)刪除規(guī)則對(duì)象)刪除規(guī)則對(duì)象v 刪除規(guī)則對(duì)象之前,首先應(yīng)使用系統(tǒng)存儲(chǔ)過程sp_unbindrule解除被綁定對(duì)象與規(guī)則對(duì)象之間的綁定關(guān)系。解除規(guī)則綁定語法格式解除規(guī)則綁定語法格式: sp_unbindrule objname = object_name , futureonly = futureonly_flag刪除規(guī)則語法格式刪

31、除規(guī)則語法格式:drop rule rule , n例1:解除規(guī)則對(duì)象sdept_rule與數(shù)據(jù)表student的sdept字段的綁定,然后刪除規(guī)則對(duì)象sdept_rule;use stuif exists (select name from sysobjects where name = sdept_rule and type=r)beginexec sp_unbindrule student.sdeptdrop rule sdept_ruleend v對(duì)比: 約束:定義表中有效的數(shù)據(jù),在事務(wù)處理前執(zhí)行,性能較好; 默認(rèn)和規(guī)則:提供獨(dú)立的可以與多個(gè)表聯(lián)系的對(duì)象實(shí)現(xiàn)數(shù)據(jù)完整性,在事務(wù)處理前執(zhí)行

32、2、觸發(fā)器、觸發(fā)器v 觸發(fā)器是一種特殊類型的存儲(chǔ)過程,只要對(duì)它所保護(hù)的數(shù)據(jù)進(jìn)行修改,它就會(huì)自動(dòng)觸發(fā)。觸發(fā)器主要是通過事件進(jìn)行觸發(fā)而被執(zhí)行的,而存儲(chǔ)過程可以通過存儲(chǔ)過程名稱而被直接調(diào)用。v 一般情況下,對(duì)表數(shù)據(jù)的操作有插入、修改和刪除,對(duì)數(shù)據(jù)的更新、插入及刪除被視為數(shù)據(jù)修改事件。因而維護(hù)數(shù)據(jù)的觸發(fā)器也可分為3種類型:insert,update和delete。一個(gè)觸發(fā)器由三部分組成:v 事件事件。事件是指對(duì)數(shù)據(jù)庫的插入、刪除修改等操作。觸發(fā)器在這些事件發(fā)生時(shí)將開始工作。v 條件條件。觸發(fā)器將測(cè)試條件是否成立。如果條件成立,就執(zhí)行相應(yīng)的動(dòng)作,否則什么也不作。v 動(dòng)作動(dòng)作。如果觸發(fā)器測(cè)試滿足預(yù)定的條件

33、,那么就由dbms執(zhí)行這些動(dòng)作(即對(duì)數(shù)據(jù)庫的操作)。1)定義觸發(fā)器)定義觸發(fā)器v 語法格式:create trigger on for | after | instead of as - after用于說明觸發(fā)器在指定操作都成功執(zhí)行后觸發(fā),是默認(rèn)設(shè)置;- instead of指定用觸發(fā)器中的操作代替觸發(fā)語句的操作;- insert、delete、update;v 例例1:對(duì)于數(shù)據(jù)庫:對(duì)于數(shù)據(jù)庫stu,創(chuàng)建一個(gè)觸發(fā)器,創(chuàng)建一個(gè)觸發(fā)器update_student,當(dāng)用,當(dāng)用戶試圖向戶試圖向student表中添加或修改數(shù)據(jù)時(shí),該觸發(fā)器向客戶端表中添加或修改數(shù)據(jù)時(shí),該觸發(fā)器向客戶端顯示一條顯示一條“插入或更新了數(shù)據(jù)表插入或更新了數(shù)據(jù)表xs!”的消息的消息; use stuif exists (select name from sysobjectswhere name = update_student and type = tr)drop trigger update_studentcreate trigger update_student on student for insert, updateas print 插入或更新了數(shù)據(jù)表student!測(cè)試:向student表插入一條記錄結(jié)果:客戶端顯示插入或更新了數(shù)據(jù)表stu

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論