預存程序與觸發器的應用,預存程序觸發器
一、實驗目的
1、掌握建立預存程序的方法和步驟;
2.掌握預存程序的使用方法;
3.掌握建立觸發器的方法和步驟;
4.掌握觸發器的使用方法。
二、實驗內容
1、預存程序的建立、執行和刪除;
2、觸發器的建立、執行和刪除。
三、實驗步驟
1、預存程序的建立、執行和刪除。
1)使用S_C資料庫中的S表、C表、SC表建立一個帶參數的預存程序—cjjicx。該預存程序的作用是: 當任意輸入一個學生的姓名時,將從三個表中返回該學生的學號、選修的課程名稱和課程成績。
cjjicx的建立語句:
CREATE PROCEDURE cjjicx
@name char(6)
AS
BEGIN
SELECT S.sno, C.cname, SC.grade FROM S, C, SC
WHERE S.sname = @name AND S.sno = SC.sno AND SC.cno = C.cno
END
2)執行cjjicx預存程序,查詢“劉晨”的學號、選修課程和課程成績。
執行語句:
EXEC cjjicx @name = '劉晨'
結果描述:
3)使用系統預存程序sp_helptext查看預存程序cjjicx的文本資訊。
查看結果描述:
sp_helptext cjjicx
4)使用S-C資料庫中的S表,為其建立一個加密的預存程序—jmxs。該預存程序的作用是:當執行該 預存程序時,將返回電腦系學生的所有資訊。
jmxs建立語句:
CREATE PROCEDURE mxs WITH ENCRYPTION
AS
BEGIN
SELECT * FROM S
END
5)執行jmxs預存程序,查看電腦系學生的情況。
執行語句:
EXEC mxs
結果描述:
SP_HELPTEXT mxs
6)刪除jmxs預存程序。
刪除語句:
DROP PROCEDURE mxs
2、觸發器的建立、執行和刪除。
1)在S_C資料庫中建立一個名為insert_xh的INSERT觸發器,儲存在SC表中。該觸發器的作用是: 當使用者向SC表中插入記錄時,如果插入了在S表中沒有的學生學號sno,則提示使用者不能插入記錄, 否則提示記錄插入成功。
insert_xh的建立語句:
CREATE TRIGGER insert_xh ON SC
AFTER INSERT
AS
BEGIN
IF(SELECT COUNT(*) FROM inserted JOIN S ON S.sno = inserted.sno) = 0
BEGIN
ROLLBACK TRAN
PRINT '使用者不能插入記錄'
END
ELSE
PRINT '記錄插入成功'
END
2)為S_C資料庫中的S表建立一個名為dele_stu的DELETE觸發器,該觸發器的作用是禁止刪除S 表中的記錄。
dele_stu的建立語句:
CREATE TRIGGER dele_stu ON S
AFTER DELETE
AS
BEGIN
ROLLBACK TRAN
PRINT '禁止刪除'
END
3)為S_C資料庫中的SC表建立一個名為update_grade的UPDATE觸發器,該觸發器的作用是禁止更 新SC表中的grade欄位的內容。
update_grade的定義語句:
CREATE TRIGGER update_grade ON SC
FOR INSERT, UPDATE
AS
DECLARE @grade1 INT;
DECLARE @grade2 INT;
SELECT @grade1 = inserted.grade FROM inserted
SELECT @grade2 = deleted.grade FROM deleted
BEGIN
IF(@grade1 != @grade2)
BEGIN
PRINT '不能修改分數'
ROLLBACK TRAN
END
END
4)刪除update_grade觸發器。
刪除update_grade觸發器的命令:
DROP TRIGGER update_grade
四、實驗總結
最最基礎的