成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Oracle中觸發(fā)器示例詳解

Oracle中觸發(fā)器示例詳解

熱門標簽:海南400電話哪里辦理 圖像地圖標注 濟南地圖標注公司 400電話是不是免費申請 呼倫貝爾智能手機地圖標注 分布式呼叫中心 貴陽電話外呼系統(tǒng)哪家好 安陽外呼系統(tǒng)免費 南寧人工智能電銷機器人費用

前言

在ORACLE系統(tǒng)里,觸發(fā)器類似過程和函數(shù),都有聲明,執(zhí)行和異常處理過程的PL/SQL塊。

觸發(fā)器類型

觸發(fā)器在數(shù)據(jù)庫里以獨立的對象存儲,它與存儲過程和函數(shù)不同的是,存儲過程與函數(shù)需要用戶顯示調用才執(zhí)行,而觸發(fā)器是由一個事件來啟動運行。即觸發(fā)器是當某個事件發(fā)生時自動地隱式運行。并且,觸發(fā)器不能接收參數(shù)。所以運行觸發(fā)器就叫觸發(fā)或點火(firing)。ORACLE事件指的是對數(shù)據(jù)庫的表進行的INSERT、UPDATE及DELETE操作或對視圖進行類似的操作。ORACLE將觸發(fā)器的功能擴展到了觸發(fā)ORACLE,如數(shù)據(jù)庫的啟動與關閉等。所以觸發(fā)器常用來完成由數(shù)據(jù)庫的完整性約束難以完成的復雜業(yè)務規(guī)則的約束,或用來監(jiān)視對數(shù)據(jù)庫的各種操作,實現(xiàn)審計的功能。

開發(fā)中肯定會用到Oracle的觸發(fā)器,本文進行詳細講解。

這里實例中用到的主要是Oracle中scott用戶下的emp以及dept表,數(shù)據(jù)如下

一、觸發(fā)器概念

1、概念:

觸發(fā)器的本質是一個存儲過程,顧名思義發(fā)生特定事件時Oracle會執(zhí)行觸發(fā)器中的代碼。細分它的組成可以分為3個部分:第一部分在什么條件下觸發(fā)器會執(zhí)行,即觸發(fā)器被觸發(fā)的事件。第二部分在什么時間點執(zhí)行觸發(fā)器即觸發(fā)器的發(fā)生事件例如before,after。第三部分觸發(fā)器自身所要做的事情,就是觸發(fā)器被觸發(fā)以后具體想表達的事件,在begin和end之間的sql。

二、觸發(fā)器的分類:

1、ddl觸發(fā)器:即執(zhí)行ddl操作后所觸發(fā)的事件。

常用的ddl操作有:grant(授權),revoke(撤銷授權),create(創(chuàng)建),drop(刪除),alter(修改),comment(注釋),audit(審核),rename(重命名)在進行具體實例以前先來講解另一個概念:oracle中的user和schema:

user:oracle中的用戶,擁有數(shù)據(jù)庫的對象以及對數(shù)據(jù)庫對象增刪改查的權限。schema:該用戶下所有數(shù)據(jù)庫對象的集合Collection.類似于生活中房子schema和房子的擁有者user之間的關系,你是一個用戶user你可以通過alter session查看別人的房子,但是你是否可以改變房子中的家具,要看這個房子的擁有者是否grant你這個權限,除非你是所有房子的最高權限人dba。

ddl Example:禁止scott用戶的所有ddl操作

CREATE OR REPLACE TRIGGER scott_trigger
BEFORE DDL
ON SCHEMA
BEGIN
 RAISE_APPLICATION_ERROR(-20008,'禁止scott用戶的所有ddl操作');
END;
create sequence myseq;

這里看到在創(chuàng)建觸發(fā)器以后如果仍然使用ddl操作,便會報錯。

2、dml觸發(fā)器:基于dml操作的觸發(fā)器,細分又可以分為行觸發(fā)器和語句觸發(fā)器。

A、語句觸發(fā)器:dml操作可能會影響很多行,主要用于對數(shù)據(jù)的安全保護。

Example:禁止在周四,周五修改emp表數(shù)據(jù)

CREATE OR REPLACE TRIGGER emp_trigger
BEFORE UPDATE OR DELETE OR INSERT
ON emp
BEGIN
 IF to_char(sysdate,'day') IN ('星期四','星期五') THEN
 RAISE_APPLICATION_ERROR(-20008,'不允許在周四周五修改emp表');
 END IF;
END;
update emp set sal=800;

這里建立觸發(fā)器以后,當你想改變所有人的工資時就會出觸發(fā)器的錯誤,所有人的工資即表示會影響很多行。

B、行級觸發(fā)器:針對需要操作的那一行,有關鍵詞:for each row,用來

(1)實現(xiàn)數(shù)據(jù)的審計功能:

Example:做一個記錄刪除員工信息的表記錄被刪除員工的信息

這里為了不改變oracle中emp表的數(shù)據(jù),新建一個emp_new表

create table emp_new
as
select * from emp;
create table emp_audit(name varchar2(10),delete_time Date);
CREATE OR REPLACE TRIGGER delete_trigger
AFTER DELETE ON emp_new
FOR EACH ROW
BEGIN
 INSERT INTO emp_audit values(:old.ename,sysdate);
END;
delete from emp_new where empno='7499';
select * from emp_audit;

這里可以看到在創(chuàng)建觸發(fā)器時,用到了for each row關鍵詞,:old.***用來表示更改以前的表中的數(shù)據(jù),:new.***用來表示更改以后的數(shù)據(jù),在刪除數(shù)據(jù)以后在日志表就有對應的記錄。

(2)實現(xiàn)數(shù)據(jù)完整性:

Example:要求員工漲工資后,不能低于原來的工資,所漲工資也不能高于原來的50%。

這里為了不改變oracle中emp表的數(shù)據(jù),新建一個emp_new表

create table emp_new
as
select * from emp;
CREATE OR REPLACE TRIGGER emp_trigger
BEFORE UPDATE OF sal ON emp_new
FOR EACH ROW
WHEN (new.salold.sal OR new.sal>1.5*old.sal)
BEGIN
 RAISE_APPLICATION_ERROR(-20008,'工資只增不降,且漲幅不可大于50%');
END;
update emp_new set sal = 1.6*sal where empno='7788';

這里可以看到當改變數(shù)據(jù)時會觸發(fā)觸發(fā)器錯誤,對表中某一個字段的修改用UPDATE OF即可,另外如果new和old在PLSQL塊的外部即BEGIN外面不可以加冒號。

(3)參照完整性:

Example:主要用于級聯(lián)更新,如更新dept表中的deptno時,emp表的deptno也更新。

這里仍然新建2個表分別和emp表dept表的數(shù)據(jù)相同。

create table emp_new
as
select * from emp;
create table dept_new
as
select * from dept;
CREATE OR REPLACE TRIGGER cascade_trigger
AFTER UPDATE OF deptno ON dept_new
FOR EACH ROW
BEGIN
 UPDATE emp_new SET deptno=:new.deptno WHERE deptno=:old.deptno;
END;
update dept_new set deptno=15 where deptno=20;
select * from dept_new;

select * from emp_new;

這里參照完整新指具有主從關系的多個表,當更新主表主鍵時需要更新從表的相關數(shù)據(jù)。

3、替代觸發(fā)器:

這里先講另一個概念:帶有with check option的視圖:

如果視圖的定義包括條件(如where子句)并且任何應用于該視圖的INSERT或UPDATE語句都應包括該條件,則必須使用WITH CHECK OPTION定義該視圖。

Example:

CREATE VIEW emp_view
(ename,empno)
AS SELECT ename,empno FROM emp 
WHERE deptno=20
WITH CHECK OPTION;

這里有個條件部門號為20,則任何修改這個視圖的語句都必須針對的是20號部門的員工。

繼續(xù)替代觸發(fā)器的概念:關鍵字insteadof,主要針對一些復雜的視圖,因為級聯(lián)表所產生的視圖不可以使用update,insert,delete等關鍵字,沒有before,after等關鍵字,并且不可以建立在with check option選項的視圖上,比如新建一個emp表和dept表的級聯(lián)視圖,則不可以向其中添加數(shù)據(jù),現(xiàn)在通過觸發(fā)器解決:

Example:

仍然新建2個表分別和emp表dept表的數(shù)據(jù)相同。

CREATE TABLE emp_new
AS
SELECT * FROM emp;
CREATE TABLE dept_new
AS
SELECT * FROM dept;
CREATE VIEW emp_dept
AS
SELECT d.deptno,d.dname,e.empno,e.ename
FROM dept_new d,emp_new e
WHERE d.deptno=e.deptno;

這里scott用戶需要先通過sysdba授權才能建立視圖:

grant create view to scott;
CREATE OR REPLACE TRIGGER insteadof_trigger
INSTEAD OF INSERT ON emp_dept
FOR EACH ROW
DECLARE
 v_temp INT;
BEGIN
 SELECT COUNT(*) INTO v_temp FROM dept_new WHERE deptno=:new.deptno;
 IF v_temp=0 THEN
  INSERT INTO dept_new(deptno,dname) VALUES(:new.deptno,:new.dname);
 END IF;
  SELECT COUNT(*) INTO v_temp FROM emp_new WHERE empno=:new.empno;
 IF v_temp=0 THEN
  INSERT INTO emp_new(deptno,empno,ename) VALUES(:new.deptno,:new.empno,:new.ename);
 END IF;
END;
INSERT INTO emp_dept values(15,'HUMANRESOURCE',7999,'LEAF');
select * from emp_new;

select * from dept_new;

這里觸發(fā)器中當對視圖進行insert時,會對相應的emp_new 和dept_new進行修改,也就做到了對復雜視圖的修改。

4、系統(tǒng)觸發(fā)器:顧名思義,由系統(tǒng)觸發(fā)器所觸發(fā)的事件,常用的系統(tǒng)事件startup,shutdown,db_roll_change,server error等。

Example:記錄啟動數(shù)據(jù)庫時的事件以及時間。

此處因為是系統(tǒng)觸發(fā)器,所以需要用sysdba的權限登陸。

CREATE TABLE event_table(event VARCHAR2(50),event_time DATE);
CREATE OR REPLACE TRIGGER event_trigger
AFTER STARTUP ON DATABASE
BEGIN
 INSERT INTO event_table VALUES(ora_sysevent,sysdate);
END;

select * from event_table;

三、觸發(fā)器的綜合實例

Example:做一個日志用來記錄scott用戶的一些操作:

首先在sysdba權限下建立日志表,序列,觸發(fā)器:

CREATE TABLE object_log(
logid NUMBER CONSTRAINT pk_logid PRIMARY KEY,
operatedate DATE NOT NULL,
objecttype VARCHAR2(50) NOT NULL,
objectowner VARCHAR2(50) NOT NULL
);
CREATE SEQUENCE obj_log_seq;
CREATE OR REPLACE TRIGGER object_trigger
AFTER CREATE OR DROP OR ALTER ON DATABASE
BEGIN
 INSERT INTO object_log VALUES(obj_log_seq.nextval,sysdate,ora_dict_obj_type,ora_dict_obj_owner);
END;

在scott用戶下隨便創(chuàng)建個東西:

CREATE SEQUENCE my_seq;

回到sysdba權限下查看日志表中是否有對應的記錄:

SELECT * FROM object_log;

發(fā)現(xiàn)有數(shù)據(jù),說明一個日志表成功做好,監(jiān)視一些用戶操作的觸發(fā)器就做好了。至此,觸發(fā)器全部說明完畢,不足之處還請評論說明,謝謝。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • 詳解oracle中通過觸發(fā)器記錄每個語句影響總行數(shù)
  • Oracle觸發(fā)器trigger詳解
  • Oracle觸發(fā)器用法實例詳解
  • oracle監(jiān)控某表變動觸發(fā)器例子(監(jiān)控增,刪,改)
  • Oracle創(chuàng)建主鍵自增表(sql語句實現(xiàn))及觸發(fā)器應用
  • Oracle中游標Cursor基本用法詳解
  • Oracle存儲過程游標用法分析
  • Oracle顯示游標的使用及游標for循環(huán)
  • 快速學習Oracle觸發(fā)器和游標

標簽:許昌 郴州 焦作 南充 合肥 涼山 遼源 滁州

巨人網絡通訊聲明:本文標題《Oracle中觸發(fā)器示例詳解》,本文關鍵詞  Oracle,中,觸發(fā)器,示例,詳解,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle中觸發(fā)器示例詳解》相關的同類信息!
  • 本頁收集關于Oracle中觸發(fā)器示例詳解的相關信息資訊供網民參考!
  • 推薦文章
    国产粉嫩一区二区三区在线观看| 免费看日产一区二区三区| 91久久精品一区二区别| 日本视频一二三区中文字幕| 亚洲欧洲闷骚av少妇影院| 亚洲国产精品电影在线观看| 成人黄色大片网站| 麻豆九一精品爱看视频在线观看免费| 日韩网站在线免费观看| 亚洲精品乱码久久久久久久久久久久| 美女日批在线观看| 深夜国产在线播放| 亚洲无码精品在线观看| 国产精品久久综合青草亚洲AV| 亚洲国产精品网站| 久久久欧美精品sm网站| 伊人久久大香线蕉综合四虎小说| 日韩区在线观看| 亚洲国产电影| 国产成人精品一区二区三区网站观看| 精品久久久久久久久久久久久久| 国产免费视频传媒| 日韩一区三区| 国产妇女馒头高清泬20p多| а√天堂中文在线资源8| 黄色www在线观看| 理论片一区二区在线| 国产不卡在线观看视频| 亚洲大片在线| 少妇大叫太大太粗太爽了a片小说| 欧美草草影院在线视频| 精品一区精品二区高清| 国产区一区二区三| 97cao在线| 欧美国产日韩一区二区三区| 日韩伦理一区二区| 免费国产h视频在线观看86| 成人网址大全| 欧美大片va欧美在线播放| 中文字幕日本不卡| 在线免费观看日韩视频| 中日韩一区二区三区| 337p粉嫩大胆噜噜噜鲁| 妞干网在线视频| 97久久精品国产| 午夜伦伦电影理论片费看| 欧美成a人片免费观看久久五月天| 久久久久综合一区二区三区| 成人国产一区| 日本少妇aaa| 2020日本在线视频中文字幕| 麻豆国产在线播放| 日韩一级片免费视频| 国产精品久久成人免费观看| 欧美成人在线免费观看| 亚洲av成人无码久久精品| 日本一级特级毛片视频| 成人在线黄色电影| 免费a级毛片在线观看| 成人a区在线观看| 亚洲一区影院| 妞干网在线视频| 国产精品最新在线观看| 日韩电影中文字幕一区| 日韩欧美在线观看视频| √8天堂资源地址中文在线| 日本成人动漫在线观看| 亚洲国产精品久久久久爰性色| 欧美日韩精品电影| 中文视频在线观看| xxxxxx在线观看| 日韩系列在线| 亚洲人精品一区| 嫩草影院视频| 国产白嫩美女无套久久| 久久精品国产大片免费观看| 精品999日本久久久影院| 国产精品久久久久毛片软件| 日韩欧美在线精品| 亚洲国产果冻传媒av在线观看| 欧美国产不卡| 在线观看亚洲专区| 成人av在线播放网站| 亚洲欧美中文日韩在线v日本| 国产一级aa大片毛片| 日韩在线资源网| av在线免费播放| 99久久婷婷国产综合| 国产suv精品一区二区三区88区| 国内精品国产三级国产aⅴ久| 国产午夜视频| 免费黄视频在线观看| 国产精品福利一区二区| 毛片在线看网站| 国产精品一区不卡| 成年人在线视频免费观看| 亚洲大片免费观看| 国产精品资源在线看| 日日夜夜免费精品视频| 国产精品资源站| 91精品国产91久久久久久密臀| 欧美精品亚洲一区二区在线播放| 三上悠亚ssⅰn939无码播放| 亚洲国产精品久久91精品| 先锋影音欧美官网| 中文在线资源观看视频网站免费不卡| 精品日韩欧美一区| 97人妻精品一区二区三区动漫| 欧美日韩在线免费视频| 鲁丝片一区二区三区| 网曝91综合精品门事件在线| 97热在线精品视频在线观看| 欧美激情资源网| 日本乱理伦在线| 视频一区二区国产| 美女诱惑一区二区| 欧美精品乱人伦久久久久久| 久久久天堂国产精品| 影音先锋成人资源网站| a√在线中文网新版址在线| 欧美亚洲视频在线观看| 日本一区二区三区四区在线视频| 亚洲一区二三| 欧美精品一区二区三区久久久| 色精品一区二区三区| 麻豆影视在线观看| 精品成人一区二区| 99成人在线视频| 婷婷综合亚洲| 色撸撸在线视频| 国产精品伦一区二区三区| 日本在线免费网| 在线观看日韩中文字幕| 六月丁香婷婷激情| 毛片视频免费观看| av小说在线观看| 91精品国产乱码久久| 精品一区二区三区在线观看视频| 日日悠悠久久| 在线免费观看视频黄| 怡红院精品视频| 在线电影看在线一区二区三区| 三上悠亚作品在线观看| 中文视频一区视频二区视频三区| 国产一区二区三区观看| 超薄肉色丝袜一二三| 日韩精品中午字幕| 男人午夜天堂| 日本一区二区三区视频在线观看| 亚洲 自拍 另类小说综合图区| 成人免费视频一区二区| 午夜欧美不卡精品aaaaa| 91福利视频网| 久久这里只有精品首页| 91精品欧美福利在线观看| h网站视频在线观看| 中文字幕永久免费视频| 精品人妻无码一区二区| 国产成人无遮挡在线视频| 欧美综合77777色婷婷| 一级肉体全黄裸片| 日韩精品在线视频免费观看| 今天免费高清在线观看国语| 国产一区二区麻豆| 97在线视频观看| 欧美久久一区二区三区| 精品欧美aⅴ在线网站| 亚洲欧美国产一区二区三区| 成人国产一区二区| 91国语精品自产拍| 色悠悠久久综合网| 777琪琪电影午夜理伦片| 国产精品久久久爽爽爽麻豆色哟哟| 麻豆精品国产91久久久久久| 人成在线免费网站| 国产成人短视频| 黄页网站大全一区二区| av成人激情| 91香蕉在线观看| 精品国偷自产在线视频99| 亚洲国产另类久久精品| 激情五月播播久久久精品| 欧美精品精品精品精品免费| 日韩精品专区在线影院观看| 国产91高潮流白浆在线麻豆| 欧美一级特黄高清视频| 久久精品中文字幕一区| 久久伊人免费视频| 加勒比日本影视| 日韩精品亚洲精品| 在线免费观看视频一区| www.黄色在线| 综合激情网站| 精产国品自在线www| 日韩影院在线观看| 黄网站色大毛片| 91九色porn蝌蚪| 国内自拍视频一区二区三区| 欧美日韩国产精品一区二区三区| 男人的天堂久久精品| 欧美精品成人91久久久久久久| 91精品啪在线观看麻豆免费| 国产亚洲成精品久久| 2024最新电影免费在线观看| 午夜精品在线视频一区| 日本不卡二三区| 九九热在线免费观看| 涩爱av在线播放一区二区| av电影免费看| 蘑菇福利视频一区播放| 免费一级黄色录像| 国产乱在线观看完整版视频| 999久久久久久| 国产尤物视频在线观看| 成人精品一区二区三区电影黑人| 国产又粗又猛又爽又黄的网站| 高清不卡一二三区| 欧美国产日韩精品免费观看| 999视频精品| 日韩欧美午夜| 91成人噜噜噜在线播放| 久久av秘一区二区三区| 国产成人三级在线观看视频| 日日摸日日搞日日| 最近中文字幕mv在线一区二区三区四区| 亚洲性生活大片| 日本韩国精品一区二区| 日韩精品在线视频| 妞干网在线播放| 精品动漫一区| 国产精品多人| 久久亚区不卡日本| 杨幂毛片午夜性生毛片| 欧美人交a欧美精品| 国产欧美日韩视频在线观看| 久久综合导航| 成年人小视频在线观看| 自拍一区在线观看| 精品免费在线视频| 制服丝袜中文字幕在线观看| 欧美日韩一区二区精品| 欧美黄色录像| 一区二区亚洲欧洲国产日韩| 亚洲黄页在线观看| 日韩高清欧美| 五月天久久网站| 日韩精品不卡一区二区| 国产午夜精品麻豆| 欧美呦呦网站| 超碰精品一区二区三区乱码| 国产精品视频一区二区三区经| 午夜欧美不卡精品aaaaa| 在线伊人免费视频| 2020亚洲男人天堂| 亚洲国产福利视频| 一本大道久久加勒比香蕉| 日本免费三片免费观看| 久久久久久久久久久网站| 国产手机视频精品| 九色蝌蚪在线观看| 国产午夜精品全部视频播放| 国产中文在线视频| 99免费在线观看视频| 全部免费毛片在线播放一个| 69av视频在线| 东京干手机福利视频| 欧美久久在线观看| 国产视频三级在线观看播放| 中文字幕有码无码人妻av蜜桃| 久久天堂av综合合色蜜桃网| 免费黄网在线看| 欧美一级淫片007| 国产日韩欧美自拍| 91丝袜脚交足在线播放| 亚洲av熟女高潮一区二区| 日韩少妇内射免费播放| 日韩电影免费观看高清完整| 黑巨人与欧美精品一区| 欧美性xxxx极品hd欧美风情| 欧美一区二区三区系列电影| 欧美性极品xxxx做受| 国产精品一区而去| 德国性xxxx| 国产一级片91| 中文字幕日韩高清| 国产又粗又猛又爽又黄的视频一| 青青草成人免费视频| 丰满少妇久久久| av一级二级| 人人干人人干人人干| 国产福利拍拍拍| 99成人国产精品视频| 日日噜噜夜夜狠狠视频欧美人| www毛片com| 国产精品视频播放| 久久亚洲高清| 日韩精品电影一区亚洲| 久久国产波多野结衣| 成人av黄色| 水蜜桃亚洲一二三四在线| 午夜性爽视频男人的天堂| 欧美日韩在线视频播放| 69久久99精品久久久久婷婷| 欧美特级限制片免费在线观看| 国产网红主播福利一区二区| 欧美成人在线影院| 欧美日韩激情在线一区二区三区| 97视频在线观看播放| 久久伊伊香蕉| 成人片免费看| 无夜福利视频观看| 影音先锋日韩av| www.99色| 在线观看黄av| 午夜精彩视频在线观看不卡| 天堂在线观看视频| 亚欧洲乱码视频| 伊人网站在线| 97久久久精品综合88久久| 亚洲精品国产熟女久久久| 成人精品天堂一区二区三区| 在线看成人短视频| 麻豆美女网站| 国产精品6666| 欧美一区永久视频免费观看| 国产精品xxxxxx| 成人网页在线观看| 久久国产精品免费观看|