tft每日頭條

 > 生活

 > oracle觸發器提交時機

oracle觸發器提交時機

生活 更新时间:2024-08-10 01:19:45
一、觸發器簡介

觸發器的定義就是說某個條件成立的時候,觸發器裡面所定義的語句就會被自動的執行。

因此觸發器不需要人為的去調用,也不能調用。

然後,觸發器的觸發條件其實在你定義的時候就已經設定好了。

觸發器可以分為語句級觸發器和行級觸發器,簡單的說就是語句級的觸發器可以在某些語句執行前或執行後被觸發。而行級觸發器則是在定義的了觸發的表中的行數據改變時就會被觸發一次。


具體舉例:

1、 在一個表中定義的語句級的觸發器,當這個表被删除時,程序就會自動執行觸發器裡面定義的操作過程。這個就是删除表的操作就是觸發器執行的條件了。

2、 在一個表中定義了行級的觸發器,那當這個表中一行數據發生變化的時候,比如删除了一行記錄,那觸發器也會被自動執行了。


二、觸發器語法

觸發器的語法:

create [or replace] tigger 觸發器名 觸發時間 觸發事件 on 表名 [for each row] begin pl/sql語句 end

其中:

觸發器名:觸發器對象的名稱。由于觸發器是數據庫自動執行的,因此該名稱隻是一個名稱,沒有實質的用途。

3)、當用戶對test表執行DML語句時,将相關信息記錄到日志表

--創建測試表 CREATE TABLE test( t_id NUMBER(4), t_name VARCHAR2(20), t_age NUMBER(2), t_sex CHAR ); --創建記錄測試表 CREATE TABLE test_log( l_user VARCHAR2(15), l_type VARCHAR2(15), l_date VARCHAR2(30) );

創建觸發器:

--創建觸發器 CREATE OR REPLACE TRIGGER TEST_TRIGGER AFTER DELETE OR INSERT OR UPDATE ON TEST DECLARE V_TYPE TEST_LOG.L_TYPE%TYPE; BEGIN IF INSERTING THEN --INSERT觸發 V_TYPE := 'INSERT'; DBMS_OUTPUT.PUT_LINE('記錄已經成功插入,并已記錄到日志'); ELSIF UPDATING THEN --UPDATE觸發 V_TYPE := 'UPDATE'; DBMS_OUTPUT.PUT_LINE('記錄已經成功更新,并已記錄到日志'); ELSIF DELETING THEN --DELETE觸發 V_TYPE := 'DELETE'; DBMS_OUTPUT.PUT_LINE('記錄已經成功删除,并已記錄到日志'); END IF; INSERT INTO TEST_LOG VALUES (USER, V_TYPE, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss')); --USER表示當前用戶名 END; /

--下面執行DML語句

INSERT INTO test VALUES(101,'zhao',22,'M'); UPDATE test SET t_age = 30 WHERE t_id = 101; DELETE test WHERE t_id = 101;

--查看效果

SELECT * FROM test; SELECT * FROM test_log;

運行結果如下:

oracle觸發器提交時機(oracle觸發器用法附實例講解)1


篇幅有限,今天内容就分享到這了,後面會更多分享DBA和devops内容,感興趣的朋友可以關注下~

oracle觸發器提交時機(oracle觸發器用法附實例講解)2

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved