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

下載本文檔

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

文檔簡介

1、學(xué)習(xí)(xux)要點 數(shù)據(jù)庫完整性概述 SQL2005完整性實現(xiàn) 觸發(fā)器 概述 創(chuàng)建、修改、查看、刪除 使用(shyng) 說明 AFTER觸發(fā)器 INSTEADOF觸發(fā)器第1頁/共60頁第一頁,共61頁。數(shù)據(jù)庫完整性概述(i sh) 數(shù)據(jù)完整性 (Data Integrity) 定義 指數(shù)據(jù)的準(zhǔn)確性和一致(yzh)性。 目的 防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù)和防止因錯誤 信息的輸入輸出造成無效操作或錯誤信息 分類 實體完整性:用于保證數(shù)據(jù)庫中數(shù)據(jù)表的每一個特定實體的記 錄都是唯一的。 域完整性:用于保證指定列的數(shù)據(jù)具有正確的數(shù)據(jù)類型、格 式和有效的數(shù)據(jù)范圍。 參照完整性:確保同一鍵值在所有

2、相關(guān)聯(lián)表之間都一致(yzh)。 用戶定義完整性 :由用戶自定義的不屬于其他任何完 整性分類的特定業(yè)務(wù)規(guī)則。第2頁/共60頁第二頁,共61頁。數(shù)據(jù)庫完整性概述(i sh)數(shù)據(jù)完整性 (Data Integrity)為維護(hù)數(shù)據(jù)庫的完整性,DBMS必須(bx):提供定義完整性約束條件的機(jī)制提供完整性檢查的方法違約處理學(xué)習(xí)(xux)要點完整性類型完整性類型實實 現(xiàn)現(xiàn) 技技 術(shù)術(shù)實體完整性實體完整性UNIQUE約束、約束、PRIMARY KEY約束、約束、IDENTITY屬性屬性域完整性域完整性CHECK約束、約束、 FOREIGN KEY約束、約束、 DEFAULT定義、定義、NOT NULL定義、定

3、義、默認(rèn)默認(rèn)對象、對象、規(guī)則規(guī)則對象對象參照完整性參照完整性FOREIGN KEY約束、約束、CHECK約束、約束、觸發(fā)器觸發(fā)器用戶定義完整性用戶定義完整性CREATE TABLE中的所有列級和表級約束、中的所有列級和表級約束、存儲存儲過程過程、觸發(fā)器觸發(fā)器第3頁/共60頁第三頁,共61頁。完整性實現(xiàn)(shxin) SQL Server 2005完整性實現(xiàn)(shxin) DEFAULT約束 CHECK約束 PRIMARY KEY約束 UNIQUE約束 FOREIGN KEY約束 NOT NULL約束 標(biāo)識列 默認(rèn)值 規(guī)則 學(xué)習(xí)(xux)要點第4頁/共60頁第四頁,共61頁。約束(yush) D

4、EFAULT約束 定義 在用戶未輸入某些列的數(shù)據(jù)時,數(shù)據(jù)庫系統(tǒng)為用戶提供的默認(rèn)值。 (默認(rèn)值必須與所約束列的數(shù)據(jù)類型相一致) 是可以(ky)避免不允許為空值的數(shù)據(jù)錯誤 可以(ky)加快用戶的輸入速度 創(chuàng)建 SSMS方式 T-SQL方式約束(yush)列表第5頁/共60頁第五頁,共61頁。 使用(shyng)SSMS工具DEFAULT約束(yush)DEFAULT約束(yush)第6頁/共60頁第六頁,共61頁。CREATE TABEL BookInfo( b_ID VARCHAR(16), b_Detail VARCHAR(100) DEFAULT 暫無描述暫無描述(mio sh) 使用(sh

5、yng)T-SQL定義(一)DEFAULT約束(yush)CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名 數(shù)據(jù)類型數(shù)據(jù)類型 CONSTRAIN 約束名約束名 DEFAULT 默認(rèn)默認(rèn)值值 ,.)列級約束 示 例NEXT第7頁/共60頁第七頁,共61頁。CREATE TABEL BookInfo( b_Detail VARCHAR(100), CONSTRAINT de_Detail DEFAULT 暫無描述暫無描述(mio sh) FOR b_Detail ) 使用(shyng)T-SQL定義(二)DEFAULT約束(yush)NEXTCREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名

6、列名1 數(shù)據(jù)類型,數(shù)據(jù)類型, CONSTRAIN 約束名約束名 DEFAULT 默認(rèn)值默認(rèn)值 FOR (列名列名 ,n) ,.)表級約束示 例第8頁/共60頁第八頁,共61頁。 使用(shyng)T-SQL定義(三)DEFAULT約束(yush)ALTER TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( ADD CONSTRAIN 約束約束(yush)名名 DEFAULT 默認(rèn)值默認(rèn)值 FOR (列名列名 ,n) ,.)修改表:添加約束ALTER TABEL BookInfo( ADD CONSTRAINT de_Detail DEFAULT 暫無描述 FOR b_Detail )示 例返回第9頁/共60頁第

7、九頁,共61頁。約束(yush) CHECK約束 定義 限制用戶輸入數(shù)據(jù)的取值范圍、格式等。 一個列可以定義多個CHECK 約束。 當(dāng)往表中插入記錄或修改相應(yīng)列的值時,系統(tǒng)檢查約束條件是否滿足(mnz),若不滿足(mnz)則拒絕執(zhí)行數(shù)據(jù)操作。 創(chuàng)建 SSMS方式 T-SQL方式約束(yush)列表第10頁/共60頁第十頁,共61頁。 使用(shyng)SSMS工具CHEECK約束(yush)CHECK約束(yush)第11頁/共60頁第十一頁,共61頁。CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名 數(shù)據(jù)類型數(shù)據(jù)類型 CONSTRAIN 約束約束(yush)名名 CHECK (邏輯表達(dá)

8、式邏輯表達(dá)式) ,.)CREATE TABEL BookInfo( b_Quantity SMALLINT CHECK (b_Quantity=1 AND b_Quantity =100), ) 使用(shyng)T-SQL定義(一)CHECK 約束(yush)列級約束 示 例NEXT第12頁/共60頁第十二頁,共61頁。 使用(shyng)T-SQL定義(二、三)CHECK 約束(yush)返回(fnhu)CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名1 數(shù)據(jù)類型,數(shù)據(jù)類型, CONSTRAIN 約束名約束名 CHECK (邏輯表達(dá)式邏輯表達(dá)式) ,.)表級約束 ALTER TABE

9、L 數(shù)據(jù)表名數(shù)據(jù)表名( ADD CONSTRAIN 約束名約束名 CHECK (邏輯表達(dá)式邏輯表達(dá)式) ,.)修改表:添加約束第13頁/共60頁第十三頁,共61頁。約束(yush) PRIMARY KEY約束 定義 若是單列作為主鍵,可以在列級定義或表級定義 若是列集合作為主鍵,必須在表級定義 一個表只能有一個PRIMARY KEY約束,受約束的列或列集合的值不能為空和重復(fù),必須能唯一標(biāo)識表中的行。 定義了PRIMARY KEY 約束的列的列寬不能更改。 創(chuàng)建(chungjin) SSMS方式 T-SQL方式約束(yush)列表第14頁/共60頁第十四頁,共61頁。 使用(shyng)SSMS

10、工具返回(fnhu)PRIMARY約束(yush)第15頁/共60頁第十五頁,共61頁。 使用(shyng)T-SQL定義(一)NEXTPRIMARY約束(yush)CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名 數(shù)據(jù)類型數(shù)據(jù)類型 CONSTRAIN 約束約束(yush)名名 PRIMARY KEY ,.)CREATE TABEL BookInfo( b_ID VARCHAR(16) PRIMARY KEY, )列級約束 示 例默認(rèn)的約束名為:PK_PK_BookInfo BookInfo 第16頁/共60頁第十六頁,共61頁。 使用(shyng)T-SQL定義(二)PRIMARY約束

11、(yush)CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名1 數(shù)據(jù)類型,數(shù)據(jù)類型, CONSTRAIN 約束約束(yush)名名 PRIMARY KEY (列名列名1,n) ,.)CREATE TABEL BorrowReturn( s_ID CHAR(8) NOT NULL, r_ID CHAR(8) NOT NULL, PRIMARY KEY (s_ID,r_ID)表級約束 示 例組合鍵必須在表級定義默認(rèn)的約束名為:PK_ PK_ BorrowReturn BorrowReturn NEXT第17頁/共60頁第十七頁,共61頁。 使用(shyng)T-SQL定義(三)返回(fnhu

12、)PRIMARY約束(yush)ALTER TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( ADD CONSTRAIN 約束名約束名 PRIMARY KEY( 列名列名, ) ,.)ALTER TABLE BorrowReturn ADD CONSTRAINT PK_ BorrowReturn PRIMARY KEY(s_ID,r_ID)示 例修改表:添加約束第18頁/共60頁第十八頁,共61頁。約束(yush) UNIQUE約束 定義 也稱唯一值約束,確保在非主鍵列中不輸入重復(fù)值。 一個表可以定義多個(du )UNIQUE 約束。 在允許空值的列上保證唯一性時,應(yīng)使用UNIQUE約束。 當(dāng)往表中插入記錄或修

13、改相應(yīng)列的值時,系統(tǒng)檢查是否有重復(fù)值,若有則拒絕執(zhí)行數(shù)據(jù)操作。 創(chuàng)建 SSMS方式 T-SQL方式約束(yush)列表第19頁/共60頁第十九頁,共61頁。 使用(shyng)SSMS工具返回(fnhu)UNIQUE約束(yush)第20頁/共60頁第二十頁,共61頁。 使用(shyng)T-SQL定義(一)NEXTUNIQUE約束(yush)CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名 數(shù)據(jù)類型數(shù)據(jù)類型 CONSTRAIN 約束約束(yush)名名 UNIQUE ,.)CREATE TABEL ReaderType( rt_ Name VARCHAR(10) UNIQUE , )列

14、級約束 示 例第21頁/共60頁第二十一頁,共61頁。 使用(shyng)T-SQL定義(二、三)UNIQUE約束(yush)返回(fnhu)CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名1 數(shù)據(jù)類型,數(shù)據(jù)類型, CONSTRAIN 約束名約束名 UNIQUE (列名列名1,n) ,.)表級約束 ALTER TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( ADD CONSTRAIN 約束名約束名 UNIQUE (列名列名1,n) ,.)修改表:添加約束第22頁/共60頁第二十二頁,共61頁。約束(yush) FOREIGN KEY約束 定義 也稱為外鍵約束,用于強(qiáng)制實現(xiàn)參照完整性,建立兩個表之間的關(guān)系

15、。 可以(ky)規(guī)定表中的某列參照同一個表或另外一個表中已有的PRIMARY KEY 約束或UNIQUE 約束的列。 一個表可以(ky)有多個FOREIGN KEY 約束。 創(chuàng)建 SSMS方式 T-SQL方式約束(yush)列表第23頁/共60頁第二十三頁,共61頁。 使用(shyng)SSMS工具 Step1NEXTFOREIGN KEY約束(yush)第24頁/共60頁第二十四頁,共61頁。 使用(shyng)SSMS工具 Step2NEXTFOREIGN KEY約束(yush)第25頁/共60頁第二十五頁,共61頁。 使用(shyng)SSMS工具 Step3NEXTFOREIGN KE

16、Y約束(yush)第26頁/共60頁第二十六頁,共61頁。 使用(shyng)SSMS工具 Step4返回(fnhu)FOREIGN KEY約束(yush)第27頁/共60頁第二十七頁,共61頁。 使用(shyng)T-SQL定義(一)示例(shl)CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名 數(shù)據(jù)類型數(shù)據(jù)類型 CONSTRAIN 約束約束(yush)名名 FOREIGN KEY REFERENCES 參照主鍵表參照主鍵表 (參照列參照列) ON DELETE CASCADE | ON UPDATE CASCADE ,. )列級約束 FOREIGN KEY約束 NO ACITON N

17、O ACITON:默認(rèn)選項。將引發(fā)錯誤,撤銷對父表的刪除(更新)操作 CASCADECASCADE:當(dāng)在主表刪除(更新)一行,則自動將子表中的對應(yīng)行刪除(更新) SET NULLSET NULL:刪除(更新)父表的一行,子表相應(yīng)行的外鍵值被置為NULLNULL SET DEFAULTSET DEFAULT:刪除(更新)父表的一行,子表相應(yīng)行的外鍵值被置為 外鍵的默認(rèn)值第28頁/共60頁第二十八頁,共61頁。 使用(shyng)T-SQL定義(一)FOREIGN KEY約束(yush)CREATE TABEL BookInfo( b_ID VARCHAR(16) PRIMARY KEY, b_N

18、ame VARCHAR(50) NOT NULL, bt_ID CHAR(10) REFERENCES BookType(bt_ID), )示 例NEXT第29頁/共60頁第二十九頁,共61頁。 使用(shyng)T-SQL定義(二)示例(shl)CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名1 數(shù)據(jù)類型,數(shù)據(jù)類型, CONSTRAIN 約束約束(yush)名名 FOREIGN KEY(列名列名) REFERENCES 參照主鍵表參照主鍵表 (參照列參照列) ON DELETE CASCADE | ON UPDATE CASCADE ,. )表級約束 FOREIGN KEY約束第30頁

19、/共60頁第三十頁,共61頁。 使用(shyng)T-SQL定義(二)NEXTFOREIGN KEY約束(yush)CREATE TABLE BorrowReturn( br_ID CHAR(6) PRIMARY KEY , s_ID CHAR(8) REFERENCES NOT NULL, r_ID CHAR(8) REFERENCES NOT NULL, FOREIGN KEY (s_ID) REFERENCES BookStore(s_ID) , FOREIGN KEY (r_ID) REFERENCES ReaderInfo(r_ID) ) 示 例第31頁/共60頁第三十一頁,共61頁

20、。 使用(shyng)T-SQL定義(三)UNIQUE約束(yush)返回(fnhu)ALTER TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( ADD CONSTRAIN 約束名約束名 FOREIGN KEY( 列名列名 ) REFERENCES 參照主鍵表參照主鍵表 (參照列參照列) ON DELETE CASCADE | ON UPDATE CASCADE ,.)修改表:添加約束ALTER TABEL BookInfo( ADD FOREIGN KEY (bt_ID) REFERENCES BookType(bt_ID) ON DELETE CASCADE ON UPDATE CASCADE ,)示 例

21、第32頁/共60頁第三十二頁,共61頁。約束(yush) NOT NULL約束 實質(zhì) 表中列可以定義為允許或不允許空值。 默認(rèn)情況下,創(chuàng)建表列允許空值。一個列中出現(xiàn)NULL 值,意味著用戶還沒有(mi yu)為該列輸入值。 若設(shè)置為NOT NULL,用戶沒有(mi yu)輸入該列值,則引發(fā)錯誤。 示例 SSMS方式 T-SQL方式約束(yush)列表第33頁/共60頁第三十三頁,共61頁。 使用(shyng)SSMS工具返回(fnhu)NOT NULL約束(yush)第34頁/共60頁第三十四頁,共61頁。 使用(shyng)T-SQL定義NOT NULL 約束(yush)CREATE TAB

22、EL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名 數(shù)據(jù)類型數(shù)據(jù)類型 CONSTRAIN 約束約束(yush)名名 NULL | NOT NULL , )表級約束 CREATE TABEL BookInfo( b_ID varchar(16) PRIMARY KEY, b_Name varchar(50) UNIQUE NOT NULL, bt_ID char(10) REFERENCES BookType(bt_ID), b_Author varchar(20) NOT NULL, b_Translator varchar(20) NULL, )示 例返回第35頁/共60頁第三十五頁,共61頁。約束(yus

23、h) 標(biāo)識列(IDENTITY) 概述 當(dāng)用戶向表中插入新的數(shù)據(jù)行時,系統(tǒng)自動為該行的IDENTITY 列賦值,并保證其值在表中的唯一性。 常與PRIMARY KEY 約束一起使用。 每個表中只能有一個IDENTITY 列,其列值不能由用戶更新,也不允許綁定默認(rèn)值或建立DEFAULT約束 標(biāo)識列的有效數(shù)據(jù)類型可以是任何整數(shù)數(shù)據(jù)類型分類(fn li)的數(shù)據(jù)類型(bit 數(shù)據(jù)類型除外),也可以是decimal 數(shù)據(jù)類型,但不允許出現(xiàn)小數(shù)。 創(chuàng)建 SSMS方式 T-SQL方式約束(yush)列表第36頁/共60頁第三十六頁,共61頁。 使用(shyng)SSMS工具返回(fnhu)標(biāo)識(biozh)

24、列(IDENTITY)第37頁/共60頁第三十七頁,共61頁。 使用(shyng)T-SQL定義返回(fnhu)CREATE TABEL 數(shù)據(jù)表名數(shù)據(jù)表名( 列名列名 數(shù)據(jù)類型數(shù)據(jù)類型 IDENTITY (種子種子(zhng zi), 增量增量) , ,.)CREATE TABEL BorrowReturn( br_ID INT IDENTITY( 1 ,1 ) PRIMARY KEY,)語法 示 例標(biāo)識列(IDENTITY)第38頁/共60頁第三十八頁,共61頁。DEFAULT(默認(rèn)值) 概 述 “默認(rèn)值”是一種數(shù)據(jù)庫對象,可以被綁定到列。如果(rgu)綁定的列或者數(shù)據(jù)類型沒有明確提供值,則

25、將默認(rèn)指定的數(shù)據(jù)插入。 “默認(rèn)值”的執(zhí)行與DEFAULT 約束功能相同,但是DEFAULT 約束定義和表存儲在一起,當(dāng)除去表時,將自動除去它。 當(dāng)在多個列中,特別是不同表中的列中多次使用同一默認(rèn)值時,適合采用“默認(rèn)”技術(shù)。管理(gunl)第39頁/共60頁第三十九頁,共61頁。 管理(gunl)“默認(rèn)值” 創(chuàng)建 綁定 解綁示例(shl)CREATE DEFAULT 默認(rèn)默認(rèn)(mrn)名稱名稱 AS 常數(shù)表達(dá)式常數(shù)表達(dá)式 sp_bindefault 默認(rèn)名稱默認(rèn)名稱, 數(shù)據(jù)表名數(shù)據(jù)表名.列名列名sp_unbindefault 數(shù)據(jù)表名數(shù)據(jù)表名.列名列名DEFAULT(默認(rèn)值) 第40頁/共60頁

26、第四十頁,共61頁。 示例(shl): 創(chuàng)建 綁定 解綁返回(fnhu)sp_bindefault d_Ssex , Student.Ssexsp_unbindefault Student.SsexUSE StudyGOCREATE DEFAULT d_Ssex AS 女女DEFAULT(默認(rèn)值) 第41頁/共60頁第四十一頁,共61頁。RULE(規(guī)則(guz)) 概 述 “規(guī)則”是一種數(shù)據(jù)庫對象,可以綁定到列,定義之后可以反復(fù)使用。 執(zhí)行“規(guī)則”功能與CHECK約束(yush)相同。 每個列只能有一個綁定的規(guī)則。但列可以同時具有規(guī)則和多個CHECK 約束(yush)。約束(yush)列表第4

27、2頁/共60頁第四十二頁,共61頁。RULE(規(guī)則(guz)) 管理(gunl)“規(guī)則” 創(chuàng)建 綁定 解綁示例(shl)CREATE RULE 規(guī)則規(guī)則名稱名稱 AS 條件條件表達(dá)式表達(dá)式 sp_bindrule 規(guī)則名規(guī)則名, 數(shù)據(jù)表名數(shù)據(jù)表名.列名列名sp_unbindrule 數(shù)據(jù)表名數(shù)據(jù)表名.列名列名第43頁/共60頁第四十三頁,共61頁。RULE(規(guī)則(guz)) 示例(shl): 創(chuàng)建 綁定 解綁返回(fnhu)sp_bindrule r_Ssex , Student.Ssexsp_unbindrule Student.SsexUSE StudyGOCREATE RULE r_Ss

28、ex AS sex=女女 OR sex=男男第44頁/共60頁第四十四頁,共61頁。觸發(fā)器 概述 觸發(fā)器 觸發(fā)器是特殊類型的存儲過程,主要由操作事件(INSERT、UPDATE、DELETE) 觸發(fā)而被自動執(zhí)行。 與表相關(guān)聯(lián):必須定義在表上。 不能直接調(diào)用,也不能傳遞或接受參數(shù) 觸發(fā)器可以實現(xiàn)比約束更復(fù)雜的數(shù)據(jù)完整性,經(jīng)常用于 加強(qiáng)( jiqing)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則。 觸發(fā)器本身是一個特殊的事務(wù)單位。第45頁/共60頁第四十五頁,共61頁。觸發(fā)器 概述 觸發(fā)器的類型 按觸發(fā)時刻分 AFTER觸發(fā)器 執(zhí)行觸發(fā)操作和處理完約束后激發(fā),只能定義于表上,同一個表上可定義多個。 INSTEAD

29、觸發(fā)器 由觸發(fā)器的程序代替(dit)觸發(fā)語句的執(zhí)行,在處理約束之前激發(fā),可在表或視圖上創(chuàng)建,同一個表或視圖只可定義一個。 按觸發(fā)語句分 INSERT觸發(fā)器 UPDATE觸發(fā)器、 DELETE觸發(fā)器 第46頁/共60頁第四十六頁,共61頁。觸發(fā)器 Inserted表和deleted表 觸發(fā)器觸發(fā)時,系統(tǒng)自動在內(nèi)存創(chuàng)建deleted表或inserted表。它們是只讀的,不允許修改;觸發(fā)器執(zhí)行完成后,自動刪除。 inserted 表 臨時保存了插入或更新后的記錄行 可以從inserted表中檢查插入的數(shù)據(jù)是否(sh fu)滿足業(yè)務(wù)需求,如果不滿足,則向用戶報告錯誤消息,并回滾插入操作。 delete

30、d 表 臨時保存了刪除或更新前的記錄行 可以從deleted表中檢查被刪除的數(shù)據(jù)是否(sh fu)滿足業(yè)務(wù)需求,如果不滿足,則向用戶報告錯誤消息,并回滾插入操作。第47頁/共60頁第四十七頁,共61頁。觸發(fā)器觸發(fā)器使用的限制CREATE TRIGGER 必須是批處理中的第一條語句(yj)。 在同一個表中約束的執(zhí)行優(yōu)先于觸發(fā)器,若在操作中觸發(fā)器與約束發(fā)生沖突,觸發(fā)器將不執(zhí)行。 不能在臨時表上建立觸發(fā)器,但是在觸發(fā)器定義中可以引用臨時表。 觸發(fā)器中不允許以下 T-SQL 語句(yj):ALTER DATABASEALTER DATABASECREATE DATABASECREATE DATABAS

31、EDISK INITDISK INITDISK RESIZEDISK RESIZEDROP DATABASEDROP DATABASELOAD DATABASELOAD DATABASELOAD LOGLOAD LOGRECONFIGURERECONFIGURERESTORE DATABASERESTORE DATABASERESTORE LOGRESTORE LOG第48頁/共60頁第四十八頁,共61頁。觸發(fā)器Inserted表和deleted表 inserted表和deleted表存放(cnfng)的信息修改操作inserted表deleted表增加增加(INSERT)(INSERT)記錄

32、記錄存放新增的記錄存放新增的記錄-刪除刪除(DELETE)(DELETE)記錄記錄-存放被刪除的記錄存放被刪除的記錄修改修改(UPDATE)(UPDATE)記錄記錄存放更新后的記錄存放更新后的記錄存放更新前的記錄存放更新前的記錄第49頁/共60頁第四十九頁,共61頁。觸發(fā)器 創(chuàng)建(chungjin)(SSMS)第50頁/共60頁第五十頁,共61頁。觸發(fā)器 創(chuàng)建(chungjin)(SSMS)創(chuàng)建觸發(fā)器的模板(mbn),只需修改相應(yīng)的參數(shù)就可創(chuàng)建觸發(fā)器第51頁/共60頁第五十一頁,共61頁。觸發(fā)器 創(chuàng)建(TSQL) 基本( jbn)語句格式CREATE TRIGGER CREATE TRIGGE

33、R 觸發(fā)器名ON ON 表名或視圖(sht)(sht)名 FOR | AFTER | INSTEAD OF FOR | AFTER | INSTEAD OF INSERT , UPDATE , DELETE INSERT , UPDATE , DELETEAS AS IF UPDATE(IF UPDATE(列名1) AND|OR UPDATE(1) AND|OR UPDATE(列名2)2) .n .n SQL SQL語句第52頁/共60頁第五十二頁,共61頁。觸發(fā)器 創(chuàng)建(TSQL) 基本( jbn)語句格式CREATE TRIGGER CREATE TRIGGER 觸發(fā)器名ON ON 表名或

34、視圖(sht)(sht)名 FOR | AFTER | INSTEAD OF FOR | AFTER | INSTEAD OF INSERT , UPDATE , DELETE INSERT , UPDATE , DELETEAS AS IF UPDATE(IF UPDATE(列名1) AND|OR UPDATE(1) AND|OR UPDATE(列名2)2) .n .n SQL SQL語句第53頁/共60頁第五十三頁,共61頁。觸發(fā)器 創(chuàng)建(TSQL) 參數(shù)(cnsh)說明u AFTER: AFTER:執(zhí)行指定操作語句和處理完約束執(zhí)行指定操作語句和處理完約束(yush)(yush)后激發(fā)觸發(fā)

35、器。后激發(fā)觸發(fā)器。u FOR: FOR:如果僅指定如果僅指定 FOR FOR 關(guān)鍵字,則關(guān)鍵字,則 AFTER AFTER 是默認(rèn)設(shè)置。是默認(rèn)設(shè)置。u INSTEAD OF: INSTEAD OF:指定語句激發(fā)觸發(fā)器并被代替執(zhí)行。指定語句激發(fā)觸發(fā)器并被代替執(zhí)行。u DELETE DELETE、INSERTINSERT、UPDATEUPDATE:指定激活觸發(fā)器的數(shù)據(jù)修改語句,必須:指定激活觸發(fā)器的數(shù)據(jù)修改語句,必須至少指定一個選項,若指定的選項多于一個,需用逗號分隔這些選項。至少指定一個選項,若指定的選項多于一個,需用逗號分隔這些選項。u AS AS:指定觸發(fā)器要執(zhí)行的操作。:指定觸發(fā)器要執(zhí)行的

36、操作。u IF UPDATE( IF UPDATE(列名列名1) AND|OR UPDATE(1) AND|OR UPDATE(列名列名2):2):指定何列數(shù)據(jù)修改指定何列數(shù)據(jù)修改時激發(fā)觸發(fā)器。不能用于時激發(fā)觸發(fā)器。不能用于DELETEDELETE語句。語句。第54頁/共60頁第五十四頁,共61頁。觸發(fā)器 創(chuàng)建(chungjin)(TSQL) 示例1CREATE TRIGGER tr_addbookCREATE TRIGGER tr_addbookON BookInfoON BookInfoFOR INSERT,UPDATEFOR INSERT,UPDATEASASBEGINBEGIN DEC

37、LARE p_no CHAR(4) DECLARE p_no CHAR(4) ,DECLARE bt_no CHAR(10),DECLARE bt_no CHAR(10) SELECT p_no=Publisher.p_ID FROM Publisher,inserted SELECT p_no=Publisher.p_ID FROM Publisher,inserted WHERE Publisher.p_ID=inserted.p_ID WHERE Publisher.p_ID=inserted.p_ID SELECT bt_no=BookType.bt_ID FROM BookType,inserted SELECT bt_no=BookType.bt_ID FROM BookType,inserted WHERE BookType.bt_ID=inserted.bt_ID WHERE BookType.bt_ID=inserted.bt_ID IF p_no is NULL OR bt_no is NULL IF p_no is NULL OR bt_no is NULL BEGIN BEGIN ROLLBACK TRANSACTION ROLLBACK TRANSACTION RAISERROR( RAISERROR(不存在

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論