【學習數據庫】觸發器

觸發器是用戶定義在表上的一類由事件驅動的特殊過程。用戶對錶的增加、刪除、修改操作均由服務器自動激活相應的觸發器。並在DBMS的核心層進行完整性控制。

inserted表、deleted表

這是兩個臨時表,觸發器執行前創建,執行完畢時刪除。

  • 執行insert語句時,Inserted存放即將插入的數據(所有要插入的行)
  • 執行delete語句時,在刪除數據前,deleted表存放要刪除的數據。
  • 執行update語句時,相當於先執行delete語句,後執行insert語句。

【N】觸發器名
【T】表名
【SQL】sql語句

創建觸發器

sql語句:
create trigger【N】on【T】《for/after/instead of》《insert/update/delete》as 【SQL】

  • for/after:對數據進行增刪改之後執行【SQL】(【SQL】在激活觸發器的語句執行之後執行)
  • instead of:對數據進行增刪改之前執行【SQL】,並放棄執行引起增刪改操作的語句。(【SQL】代替了激活觸發器的語句)
  • insert/update/delete:爲激活觸發器的操作類型,對應增,改,刪操作。

修改觸發器

alter trigger【N】on【T】《for/after/instead of》《insert/update/delete》as 【SQL】
修改可以理解是刪除觸發器N之後再創建

刪除觸發器

drop trigger【N】

例子

要求刪除一個學生時,該學生的選課記錄同時被刪除。

student(學生表)的部分數據
在這裏插入圖片描述
sc(選課表)的部分數據
在這裏插入圖片描述

  1. 創建觸發器
create trigger DELETE_STU on student for delete as
declare @tem_sno char(9)
select @tem_sno=sno from deleted
delete from sc where sno=@tem_sno

在這裏插入圖片描述
2. 激活觸發器

delete from student where sno=182056299

刪除了學號爲182056299的學生
在這裏插入圖片描述
觸發器將sc表中的選課記錄也刪除了
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章