JDBC實驗四 觸發器的應用_第1頁
JDBC實驗四 觸發器的應用_第2頁
JDBC實驗四 觸發器的應用_第3頁
JDBC實驗四 觸發器的應用_第4頁
JDBC實驗四 觸發器的應用_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、廣州中醫藥大學信息技術學院實 驗 報 告課程名稱:網絡數據庫編程專業班級:計算機科學與技術(08)級學生學號:2008081042學生姓名:王湛澤實驗名稱:觸發器的應用實驗成績:課程類別:必修 限選 公選 其它實驗四 觸發器的應用實驗類型:應用性實驗 實驗日期: 2011-4-13 實驗目的1. 熟悉Transact_sql數據庫程序設計2. 熟悉觸發器的設計及應用實驗內容與要求 將1-5題的結果文件以題目命名,如題1,題2.題3,題4。題5,放在自己的文件夾中。1. 利用SQL語句建立一個數據表STUDENT_INFO,其中包括以下字段:Sno INT NOT NULL,Sname CHAR

2、(10) NOT NULL, Sex CHAR(2) ,Telephone CHAR(16),Deptno char(8) NOT NULL ,SCORE INT建立一個數據表DEPT_INFO,其中包括以下字段:DEPTNO char(8) NOT NULL PRIMARY KEY,DEPTNAME CHAR(20),DEPTADMIN CHAR(16)CREATE TABLE dbo.STUDENT_INFO(Sno int NOT NULL,Sname char(10) NOT NULL,Sex char(2) NULL,Telephone char(16) NULL,Deptno ch

3、ar(8) NOT NULL,SCORE int NULL)GOCREATE TABLE dbo.DEPT_INFO(DEPTNO char(8) NOT NULL,DEPTNAME char(20) NULL,DEPTADMIN char(16) NULL, CONSTRAINT PK_DEPT_INFO PRIMARY KEY CLUSTERED (DEPTNO ) ON PRIMARY)GO2. 在表STUDENT_INFO中創建一個觸發器,將成績(SCORE)限制在0-100之間。注意:CREATE TRIGGER要在單個批處理中執行CREATE TRIGGER IN_STUON ST

4、UDENT_INFOFOR INSERTASBEGINDECLARE X INTSELECT X=SCORE FROM INSERTEDIF(X100)BEGINROLLBACK TRANSACTIONPRINT (成績(SCORE)限制在0-100之間)ENDEND3. 使用JDBC對數據庫的事務操作及觸發器2種方法實現以下功能。建立兩個表: Create Table Student( -學生表 StudentID int primary key, -學號 ) Create Table BorrowRecord( -學生借書記錄表 BorrowRecord int identity(1,1)

5、, -流水號 StudentID int , -學號 BorrowDate datetime, -借出時間 ReturnDAte Datetime, -歸還時間 ) 要求實驗的功能有:(1) 如果更改了學生的學號,希望他的借書記錄仍然與這個學生相關(也就是同時更改借書記錄表的學號);CREATE TRIGGER UP_StudentON StudentFOR UPDATEASIF UPDATE(StudentID)BEGINUPDATE BorrowRecordSET StudentID=I.StudentID FROM BorrowRecord B, DELETED D, INSERTEDI

6、 WHERE B.StudentID=D.StudentID END(2) 如果該學生已經畢業,希望刪除他的學號的同時,也刪除它的借書記錄。CREATE TRIGGER DEL_StudentON StudentFOR DELETEASDELETE BorrowRecordFROM BorrowRecord B , DELETED DWHERE B.StudentID=D.StudentID 4. 驗證講稿中后面2張幻燈片練習1。(以下為理論知識題)6、在SQL SERVER中如何獲取當前日期和時間?getdate()7、設置在1小時后查詢表SALARY。BEGINWAITFOR DELAY

7、1:00:00SELECT * FROM SALARYEND8、什么是觸發器,有什么優點?觸發器是一種特殊類型的存儲過程,當使用下面的一種或多種數據修改操作在指定表中對數據進行修改時,觸發器會生效:UPDATE、INSERT 或 DELETE。觸發器可以查詢其它表,而且可以包含復雜的 SQL 語句。它們主要用于強制復雜的業務規則或要求。觸發器可通過數據庫中的相關表實現級聯更改;不過,通過級聯引用完整性約束可以更有效地執行這些更改。觸發器可以強制比用 CHECK 約束定義的約束更為復雜的約束。 與 CHECK 約束不同,觸發器可以引用其它表中的列。例如,觸發器可以使用另一個表中的 SELECT

8、比較插入或更新的數據,以及執行其它操作,如修改數據或顯示用戶定義錯誤信息。 觸發器也可以評估數據修改前后的表狀態,并根據其差異采取對策。 一個表中的多個同類觸發器(INSERT、UPDATE 或 DELETE)允許采取多個不同的對策以響應同一個修改語句。觸發器還有助于強制引用完整性,以便在添加、更新或刪除表中的行時保留表之間已定義的關系。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。如果使用數據庫關系圖,則可以在表之間創建關系以自動創建外鍵約束。觸發器的優點如下: 觸發器是自動的:它們在對表的數據作了任何修改(比如手工輸入或者應用程序采取的操作)之后立即被激活。觸發器可以通過數

9、據庫中的相關表進行層疊更改。觸發器可以強制限制,這些限制比用 CHECK 約束所定義的更復雜。與 CHECK 約束不同的是,觸發器可以引用其它表中的列。9、觸發器有哪三種類型,并簡述觸發器的原理。常見的觸發器有三種:分別應用于Insert , Update , Delete 事件。觸發器是一種特殊的存儲過程,它不能被顯式地調用,而是在往表中插入記錄、更改記錄或者刪除記錄時,當事件發生時,才被自動地激活。10、Inserted和deleted 表的作用是什么?Deleted 與Inserted分別表示觸發事件的表“舊的一條記錄”和“新的一條記錄”。一個數據庫系統中有兩個虛擬表用于存儲在表中記錄改

10、動的信息,分別是: 虛擬表Inserted ,虛擬表Deleted。Inserted 表 保存 insert或update以后更新的內容Deleted 表 保存 delete 或update前更新的內容11、分別寫出如何用系統存儲過程實現如下操作l 查看表中的觸發器select * from sysobjects where xtype=TRl 查看觸發器的定義文本exec sp_helptext 觸發器名稱l 查看觸發器的所有者和創建日期exec sp_help 觸發器名稱l 查看觸發器的相關依賴性sp_depends 觸發器名稱 實驗體會請在下方寫出你對本實驗的看法,例如你認為實驗難度如何?你能夠獨

溫馨提示

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

評論

0/150

提交評論