




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、創(chuàng)建(chungjin)觸發(fā)器的語法CREATE OR REPLACE TRIGGER trigger_nameAFTER | BEFORE | INSTEAD OFINSERT OR UPDATE OF column_list OR DELETEON table_or_view_nameREFERENCING OLD AS old / NEW AS newFOR EACH ROWWHEN (condition)pl/sql_block;第1頁/共24頁第一頁,共25頁。觸發(fā)器的組成部分(z chn b fn)-1觸發(fā)器由三部分組成:觸發(fā)器語句(事件)定義激活觸發(fā)器的 DML 事件和 DDL
2、事件觸發(fā)器限制執(zhí)行(zhxng)觸發(fā)器的條件,該條件必須為真才能激活觸發(fā)器觸發(fā)器操作(主體)包含一些 SQL 語句和代碼,它們在發(fā)出了觸發(fā)器語句且觸發(fā)限制的值為真時運行第2頁/共24頁第二頁,共25頁。觸發(fā)器的組成部分(z chn b fn)-2 SQL CREATE OR REPLACE TRIGGER trig_salAFTER UPDATE OF empsal ON salary_records觸發(fā)器語句(yj)為 salary_records 表創(chuàng)建(chungjin) trig-sal 觸發(fā)器在更新 emp_sal 列之后激活觸發(fā)器觸發(fā)器限制SQL FOR EACH ROWWHEN
3、(NEW.empsalOLD.empsal)DECLARESal_diff NUMBER;只有在WHEN子句中的條件得到滿足時,才激活trig_sal 觸發(fā)器觸發(fā)器操作SQL BEGIN sal_diff:=:NEW.empsal-:OLD.empsal; DBMS_OUTPUT.PUT_LINE(工資差額:sal_diff);END;如果WHEN子句中的條件得到滿足,將執(zhí)行BEGIN 塊中的代碼第3頁/共24頁第三頁,共25頁。觸發(fā)器的組成部分(z chn b fn)-3Oracle 數(shù)據(jù)庫更新(gngxn)表表保存(bocn)更新激活觸發(fā)器觸發(fā)器AFTER 觸發(fā)器的工作原理BEFORE 觸
4、發(fā)器的工作原理更新表表激活觸發(fā)器觸發(fā)器保存更新Oracle 數(shù)據(jù)庫第4頁/共24頁第四頁,共25頁。創(chuàng)建(chungjin)觸發(fā)器CREATE OR REPLACE TRIGGER aiu_itemfileAFTER INSERTON itemfileFOR EACH ROWBEGIN IF (:NEW.qty_hand = 0) THEN DBMS_OUTPUT.PUT_LINE(警告:已插入(ch r)記錄,但數(shù)量為零); ELSE DBMS_OUTPUT.PUT_LINE(已插入(ch r)記錄); END IF;END;/第5頁/共24頁第五頁,共25頁。觸發(fā)器類型(lixng)-1
5、觸發(fā)器的類型(lixng)有:觸發(fā)器類型(lixng)模式(DDL)觸發(fā)器DML觸發(fā)器數(shù)據(jù)庫級觸發(fā)器語句級觸發(fā)器行級觸發(fā)器INSTEAD OF觸發(fā)器第6頁/共24頁第六頁,共25頁。觸發(fā)器類型(lixng)-2DDL 觸發(fā)器數(shù)據(jù)庫級觸發(fā)器DML 觸發(fā)器語句(yj)級觸發(fā)器行級觸發(fā)器INSTEAD OF 觸發(fā)器在模式(msh)中執(zhí)行 DDL 語句時執(zhí)行在發(fā)生打開、關(guān)閉、登錄和退出數(shù)據(jù)庫等系統(tǒng)事件時執(zhí)行在對表或視圖執(zhí)行DML語句時執(zhí)行無論受影響的行數(shù)是多少,都只執(zhí)行一次對DML語句修改的每個行執(zhí)行一次用于用戶不能直接使用 DML 語句修改的視圖第7頁/共24頁第七頁,共25頁。觸發(fā)器類型(lixn
6、g)-3 行級觸發(fā)器SQL CREATE TABLE TEST_TRG (ID NUMBER, NAME VARCHAR2(20);SQL CREATE SEQUENCE SEQ_TEST;SQL CREATE OR REPLACE TRIGGER BI_TEST_TRGBEFORE INSERT OR UPDATE OF IDON TEST_TRGFOR EACH ROWBEGIN IF INSERTING THEN SELECT SEQ_TEST.NEXTVAL INTO :NEW.ID FROM DUAL; ELSE RAISE_APPLICATION_ERROR(-20020, 不允許
7、(ynx)更新ID值!); END IF;END;/第8頁/共24頁第八頁,共25頁。觸發(fā)器類型(lixng)-4SQL CREATE OR REPLACE TRIGGER trgdemo AFTER INSERT OR UPDATE OR DELETE ON order_masterBEGIN IF UPDATING THEN DBMS_OUTPUT.PUT_LINE(已更新 ORDER_MASTER 中的數(shù)據(jù)(shj); ELSIF DELETING THEN DBMS_OUTPUT.PUT_LINE(已刪除 ORDER_MASTER 中的數(shù)據(jù)(shj); ELSIF INSERTING
8、THEN DBMS_OUTPUT.PUT_LINE(已在 ORDER_MASTER 中插入數(shù)據(jù)(shj); END IF;END;/ 語句(yj)級觸發(fā)器第9頁/共24頁第九頁,共25頁。觸發(fā)器類型(lixng)-5SQL CREATE OR REPLACE TRIGGER upd_ord_view INSTEAD OF UPDATE ON ord_view FOR EACH ROW BEGIN UPDATE order_master SET vencode=:NEW.vencode WHERE orderno = :NEW.orderno;DBMS_OUTPUT.PUT_LINE(已激活(j
9、 hu)觸發(fā)器); END; / INSTEAD OF 觸發(fā)器第10頁/共24頁第十頁,共25頁。觸發(fā)器類型(lixng)-6SQL CREATE TABLE dropped_obj ( obj_name VARCHAR2(30), obj_type VARCHAR2(20), drop_date DATE);SQL CREATE OR REPLACE TRIGGER log_drop_objAFTER DROP ON SCHEMABEGIN INSERT INTO dropped_obj VALUES( ORA_DICT_OBJ_NAME, ORA_DICT_OBJ_TYPE, SYSDAT
10、E);END;/ 模式(msh)觸發(fā)器第11頁/共24頁第十一頁,共25頁。 啟用(qyng)和禁用觸發(fā)器 刪除觸發(fā)器啟用(qyng)、禁用和刪除觸發(fā)器SQL ALTER TRIGGER aiu_itemfile DISABLE;SQL ALTER TRIGGER aiu_itemfile ENABLE;SQL DROP TRIGGER aiu_itemfile;第12頁/共24頁第十二頁,共25頁。查看有關(guān)(yugun)觸發(fā)器的信息SQL SELECT TRIGGER_NAME FROM USER_TRIGGERSWHERE TABLE_NAME=EMP;SQL SELECT TRIGGER
11、_TYPE, TRIGGERING_EVENT, WHEN_CLAUSEFROM USER_TRIGGERSWHERE TRIGGER_NAME = BIU_EMP_DEPTNO; USER_TRIGGERS 數(shù)據(jù)(shj)字典視圖包含有關(guān)觸發(fā)器的信息第13頁/共24頁第十三頁,共25頁。權(quán)限(qunxin) 權(quán)限是執(zhí)行一種特殊類型的SQL語句(yj)或存取另一用戶的對象的權(quán)力。有兩類權(quán)限:系統(tǒng)權(quán)限和對象權(quán)限。 系統(tǒng)權(quán)限:是執(zhí)行一處特殊動作或者在對象類型上執(zhí)行一種特殊動作的權(quán)利。 系統(tǒng)權(quán)限可授權(quán)給用戶或角色,一般,系統(tǒng)權(quán)限只授予管理人員和應(yīng)用開發(fā)人員,終端用戶不需要這些相關(guān)功能。 對象權(quán)限:在
12、指定的表、視圖、序列、過程、函數(shù)或包上執(zhí)行特殊動作的權(quán)利。第14頁/共24頁第十四頁,共25頁。角色(ju s) 為相關(guān)權(quán)限的命名組,可授權(quán)給用戶和角色。數(shù)據(jù)庫角色包含下列功能: 一個角色可授予系統(tǒng)權(quán)限或?qū)ο髾?quán)限。 一個角色可授權(quán)給其它角色,但不能循環(huán)授權(quán)。 任何角色可授權(quán)給任何數(shù)據(jù)庫用戶。 授權(quán)給用戶的每一角色可以是可用的或者不可用的。 一個間接授權(quán)角色對用戶可顯式地使其可用或不可用。 在一個數(shù)據(jù)庫中,每一個角色名必須唯一。角色名與用戶不同,角色不包含在任何模式中,所以建立角色的用戶被刪除(shnch)時不影響該角色。 建立角色的目的 為數(shù)據(jù)庫應(yīng)用管理權(quán)限和為用戶組管理權(quán)限。相對應(yīng)的角色稱為
13、應(yīng)用角色和用戶角色。 應(yīng)用角色是授予的運行數(shù)據(jù)庫應(yīng)用所需的全部權(quán)限。 用戶角色是為具有公開權(quán)限需求的一組數(shù)據(jù)庫用戶而建立的。用戶權(quán)限管理是受應(yīng)用角色或權(quán)限授權(quán)給用戶角色所控制,然后將用戶角色授權(quán)給相應(yīng)的用戶。第15頁/共24頁第十五頁,共25頁。利用角色對權(quán)限(qunxin)管理的優(yōu)點 ORACEL利用角色更容易地進(jìn)行權(quán)限管理。有下列優(yōu)點: 減少權(quán)限管理,不要顯式地將同一權(quán)限組授權(quán)給幾個用戶,只需將這權(quán)限組授給角色,然后將角色授權(quán)給每一用戶。 動態(tài)權(quán)限管理,如果一組權(quán)限需要(xyo)改變,只需修改角色的權(quán)限,所有授給該角色的全部用戶的安全域?qū)⒆詣拥胤从硨巧鞯男薷摹?權(quán)限的選擇可用性,授權(quán)
14、給用戶的角色可選擇地使其可用或不可用。 應(yīng)用可知性,當(dāng)用戶經(jīng)用戶名執(zhí)行應(yīng)用時,該數(shù)據(jù)庫應(yīng)用可查詢字典,將自動地選擇使角色可用或不可用。 應(yīng)用安全性,角色使用可由口令保護(hù),應(yīng)用可提供正確的口令使用角色,第16頁/共24頁第十六頁,共25頁。創(chuàng)建(chungjin)角色-1 使用CREATE ROLE語句可以創(chuàng)建一個新的角色,執(zhí)行該語句的用戶必須具有CREATE ROLE系統(tǒng)權(quán)限。 在角色剛剛創(chuàng)建時,它并不具有任何權(quán)限,這時的角色是沒有用處的。因此,在創(chuàng)建角色之后,通常會立即(lj)為它授予權(quán)限。例如:利用下面的語句創(chuàng)建了一個名為OPT_ROLE的角色,并且為它授予了一些對象權(quán)限和系統(tǒng)權(quán)限: CR
15、EATE ROLE OPT_ROLE; GRANT SELECT ON sal_history TO OPT_ROLE; GRANT INSERT,UPDATE ON mount_entry TO OPT_ROLE; GRANT CREATE VIEW TO OPT_ROLE;第17頁/共24頁第十七頁,共25頁。授予權(quán)限或角色(ju s)- 授予系統(tǒng)權(quán)限 在GRANT關(guān)鍵字之后(zhhu)指定系統(tǒng)權(quán)限的名稱,然后在TO關(guān)鍵字之后(zhhu)指定接受權(quán)限的用戶名,即可將系統(tǒng)權(quán)限授予指定的用戶。 例如:利用下面的語句可以相關(guān)權(quán)限授予用戶chenjie: GRANT CREATE USER,ALT
16、ER USER,DROP USER TO chenjie WITH ADMIN OPTION;第18頁/共24頁第十八頁,共25頁。授予權(quán)限或角色(ju s)- 授予對象權(quán)限 Oracle對象權(quán)限指用戶在指定的表上進(jìn)行特殊操作的權(quán)利。 在GRANT關(guān)鍵字之后指定對象權(quán)限的名稱,然后在ON關(guān)鍵字后指定對象名稱,最后在TO關(guān)鍵字之后指定接受權(quán)限的用戶名,即可將指定對象的對象權(quán)限授予指定的用戶。 使用一條GRANT語句可以同時授予用戶多個對象權(quán)限,各個權(quán)限名稱之間用逗號分隔。 有三類對象權(quán)限可以授予表或視圖中的字段,它們是分別(fnbi)是INSERT,UPDATE和REFERENCES對象 例如:
17、利用下面的語句可以將CUSTOMER表的SELECT和INSERT,UPDATE對象權(quán)限授予用戶chenqian: GRANT SELECT,INSERT(CUSTOMER_ID,CUSTOMER_name),UPDATE(desc) ON CUSTOMER TO chenqian WITH GRANT OPTION; 在授予對象權(quán)限時,可以使用一次關(guān)鍵字ALL或ALL PRIVILEGES將某個對象的所有對象權(quán)限全部授予指定的用戶。第19頁/共24頁第十九頁,共25頁。授予權(quán)限(qunxin)或角色- 授予角色 在GRANT關(guān)鍵字之后指定角色的名稱,然后在TO關(guān)鍵字之后指定用戶名,即可將角色
18、授予指定的用戶。Oracle數(shù)據(jù)庫系統(tǒng)預(yù)先(yxin)定義了CONNECT、RESOURCE、DBA、 EXP_FULL_DATABASE、IMP_FULL_DATABASE五個角色。CONNECT具有創(chuàng)建表、視圖、序列等權(quán)限;RESOURCE具有創(chuàng)建過程、觸發(fā)器、表、序列等權(quán)限、DBA具有全部系統(tǒng)權(quán)限;EXP_FULL_DATABASE、 IMP_FULL_DATABASE具有卸出與裝入數(shù)據(jù)庫的權(quán)限。 通過查詢sys.dba_sys_privs可以了解每種角色擁有的權(quán)利。第20頁/共24頁第二十頁,共25頁。回收權(quán)限(qunxin)或角色 使用REVOKE語句可以回收己經(jīng)授予用戶(或角色)的
19、系統(tǒng)(xtng)權(quán)限、對象權(quán)限與角色,執(zhí)行回收權(quán)限操作的用戶同時必須具有授予相同權(quán)限的能力。 例如:利用下面的語句可以回收已經(jīng)授予用戶chenqian的SELECT和UPDATE對象權(quán)限: REVOKE SELECT,UPDATE ON CUSTOMER FROM chenqian; 利用下面的語句可以回收已經(jīng)授予用戶chenjie的CREATE ANY TABLE系統(tǒng)(xtng)權(quán)限: REVOKE CREATE ANY TABLE FROM chenjie; 利用下面的語句可以回收己經(jīng)授予用戶chenjie的OPT_ROLE角色: REVOKE OPT_ROLE FROM chenjie;
20、 在回收對象權(quán)限時,可以使用關(guān)鍵字ALL或ALL PRIVILEGES將某個對象的所有對象權(quán)限全部回收。 例如:利用下面的語句可以回收己經(jīng)授予用戶chenqian的CUSTOMER表的所有對象權(quán)限: REVOKE ALL ON CUSTOMER FROM chenjie;第21頁/共24頁第二十一頁,共25頁。激活和禁用(jn yn)角色 一個用戶可以同時被授予多個角色,但是并不是所有的這些角色都同時起作用。角色可以處于兩種狀態(tài):激活狀態(tài)或禁用狀態(tài),禁用狀態(tài)的角色所具有權(quán)限并不生效。 當(dāng)用戶連接到數(shù)據(jù)庫中時,只有他的默認(rèn)角色(Default Role)處于激活狀態(tài)。在ALTER USER角色中使用DEFAULT ROLE子句可以改變用戶的默認(rèn)角色。 例如:如果(rgu)要將用戶所擁有的一個角色設(shè)置為默認(rèn)角色,可以使用下面的語句: ALTER USER chenjie DEFAULT ROLE connect,OPT_ROLE 在用戶會話
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年南京審計大學(xué)輔導(dǎo)員考試真題
- 2024年婁底雙峰縣林業(yè)局所屬事業(yè)單位選調(diào)真題
- 培養(yǎng)學(xué)生合作精神的計劃
- 2025屆廣東省廣州市廣州大附中數(shù)學(xué)八下期末考試試題含解析
- 明確職責(zé)與任務(wù)分配計劃
- 2024年北京市自來水集團(tuán)招聘筆試真題
- 面對失敗的心態(tài)與反思2024年高考作文試題及答案
- 黑龍江省雞西市虎林市八五八農(nóng)場學(xué)校2025年八年級數(shù)學(xué)第二學(xué)期期末檢測模擬試題含解析
- 業(yè)務(wù)連續(xù)性與戰(zhàn)略風(fēng)險試題及答案
- 安徽省六安市名校2025屆七年級數(shù)學(xué)第二學(xué)期期末復(fù)習(xí)檢測模擬試題含解析
- 湖北省華大新高考聯(lián)盟2025屆5月名校高考預(yù)測卷高三語文試卷 含解析
- 貴州游船傾覆防災(zāi)減災(zāi)安全教育時事熱點
- 宏觀策略-專題報告:近年來中國基建投資趨勢與特征
- 黑龍江省大慶市石油高級中學(xué)2024-2025學(xué)年高二上學(xué)期期末語文試題 含解析
- 2025全國保密教育線上培訓(xùn)考試試題庫(含答案)
- 呼吸性酸中毒試題及答案
- 航天技術(shù)發(fā)展與應(yīng)用知識題庫
- 管理會計試題及答案英文
- 2025購車貸款合同范本
- 檢察院相關(guān)試題及答案
- 2025-2030年中國女鞋行業(yè)市場供需分析與發(fā)展戰(zhàn)略咨詢報告
評論
0/150
提交評論