資料庫原理 儲存過程與觸發器

2021-10-06 13:59:37 字數 2500 閱讀 6264

1、要求

1、執行儲存過程時,實引數等於儲存過程中形引數;實引數少於儲存過程中形引數;

2、執行儲存過程;通過對錶操作觸發激發觸發器執行並檢視結果。

實驗環境:mysql

實驗步驟

1. 定義儲存過程

① 建立乙個能向學生表student中插入一條記錄的儲存過程insert_student,該儲存過程需要五個引數,分別用來傳遞學號、姓名、班級號、性別、出生日期5個值。

插入一條記錄的儲存過程insert_student:

執行儲存過程:

④執行儲存過程insert_course,向課程表course中插入一門新課程,分兩種情況:

第一種情況:提供三個實參值執行儲存過程insert_course,實參值由使用者自己給出。

執行完畢後,查詢兩種執行儲存過程的結果並比較差別。

因為mysql儲存過程不支援預設引數操作,所以用在sqlsever下儲存過程的建立和執行,由於之前沒有安裝sqlsever不能驗證其正確性:

create

procedure insert_course(

@course_no

char(5

),@course_name

char(20

),@course_score

int=2)

asbegin

insert

into course

values

(@course_no

,@course_name

,@course_score);

endexec insert_course '30007'

,'數學建模'

;select

*from course;

⑤建立乙個名稱為query_student的儲存過程,該儲存過程的功能是從資料表student中根據學號查詢某一同學的姓名、班級號、性別、出生日期。

①建立乙個當向學生表student中插入一條新記錄時能自動列出全部同學資訊的觸發器display_student。執行儲存過程insert_student,向學生表student中插入一條新記錄,看觸發器display_student是否被執行。

在mysql的trigger和function中不能出現select * from table;或select 欄位1, 欄位2, 欄位3 from table;等等形式的查詢,因為其會返回乙個結果集;而這在mysql的trigger和function中是不可接受的,但是在儲存過程中可以。

先給choice表中插入了學號為「991203」學生的選課記錄,然後建立觸發器、刪除student表中「991203」的記錄

(4)當修改學生表中學生學號時,保證選課表中的學號同時更新。

操作技巧與注意事項:

1. create procedure語句和create trigger語句必須是批處理的第乙個語句。

2. 資料庫所有者具有預設的建立儲存過程的許可權,它可把該許可權傳遞給其他的使用者。

3. 表的所有者具有建立觸發器的預設許可權,他不能把該許可權傳遞給其他的使用者。

4. 儲存過程和觸發器作為資料庫的物件,其命名必須符合命名規則。

5. 只能在當前資料庫中建立屬於當前資料庫的儲存過程和觸發器。

6. 乙個觸發器只能對應乙個表。

7. 儲存過程與bat檔案又有很大的差別,儲存過程已經進行了預編譯,而bat檔案僅僅是將一些命令集合在一起。

8. 在物件資源管理器中,不能直接刪除觸發器。刪除觸發器只能使用drop trigger語句。

資料庫儲存過程與觸發器

資料庫儲存過程 儲存過程 stored procedure 是在大型 資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。優點 重複使用。儲存過程可以重複使用,從而可以減...

資料庫 儲存過程與觸發器

儲存過程是儲存在資料庫目錄中的一段宣告性sql語句。儲存過程是資料庫中的乙個重要物件,使用者通過指定儲存過程的名字並給出引數來執行它。儲存過程的優點 增強了sql語句的功能和靈活性 不需要反覆建立一系列處理步驟,保證了資料的完整性 降低了網路的通訊量,客戶端呼叫儲存過程只需要傳儲存過程名和相關引數即...

資料庫儲存過程和觸發器

建立儲存過程 create procedure titles sum title varchar 40 sum money output asselect sum sum price from titles where title like title godeclare totalcost mon...