我的理解 所謂的觸發器也就是相當於方法 只是省去了我們的一些繁瑣的操作 像存儲過程我們想要使用代碼實現的功能就要一遍一遍的點擊執行是不是有點麻煩,但是我們用觸發器的話就會省去一些操作,比如我們想要在某表里面添加一條數據同時又給另一個表添加一條數據而且有主外鍵關系,那么我們需要一條一條的來寫 是不是太麻煩了 所以這就借用了觸發器這個方法 ,就能幫助我們解決這個問題 再打個比方 通俗講:一個班級新來了一個學生是不是要學生表里添加一個學生信息然后班級表里面人數要+1那么這時候就派上觸發器的用場了
進入主話題
首先觸發器的基本語法--記住一定是先執行觸發器然后在執行你的操作方法
create or replace trigger 名字 --創建觸發器
after/before --在什么什么之后 /在什么什么之前
insert/update/delete --操作方法 你用哪個就寫哪個
on --理解為在的意思
student --表名
for each row
begin
邏輯處理
end;
------------------操作方法
insert into 表名 values();
update 表名 set 字段=字段 where ....;
delete from 表名 where 條件;
--舉一個例子--我先寫操作方法是為了寫觸發器作比較 寫不容易出錯誤 希望認可的朋友可以借鑒一下
添加分數時,觸發器打印 有人在做添加
INSERT INTO chenji VALUES(20080101,2,100);
刪除分數時,觸發器打印 有人在做刪除
DELETE FROM chenji WHERE stuno=20080101
修改分數時,觸發器打印 有人在做修改
UPDATE chenji SET score=99 WHERE stuno=20080101
-- 觸發器
CREATE OR REPLACE TRIGGER t1
AFTER
INSERT OR DELETE OR UPDATE
ON chenji
FOR EACH ROW
BEGIN
IF inserting THEN -- 判斷用戶的動作
dbms_output.put_line('添加');
END IF;
IF deleting THEN
dbms_output.put_line('刪除');
END IF;
IF updating THEN
dbms_output.put_line('修改');
END IF;
END;

+for each row 為行級觸發器,不加for each為語句級觸發器 具體意思還是自己嘗試一下效果最好!
圖片里面end后面應該有個分號結束 可能是忘記寫了
--補充一個知識點
觸發器監控用戶多個動作時,如何判斷具體的動作
inserting :判斷用戶是否執行的是添加動作
deleting判斷用戶是否執行的是刪除動作
updating判斷用戶是否執行的是修改動作
這個觸發器知識說多也不多但是也不少 就是要套公式 基本公式掌握了 遇到一些問題就去套公式一般就能做出來了 最主要還是要理解觸發器的原理 就OK!
時間 2019-03-05 晚上23:44 HaoDi888
