05觸發(fā)器和權(quán)限管理課件_第1頁
05觸發(fā)器和權(quán)限管理課件_第2頁
05觸發(fā)器和權(quán)限管理課件_第3頁
05觸發(fā)器和權(quán)限管理課件_第4頁
05觸發(fā)器和權(quán)限管理課件_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

oracle觸發(fā)器和權(quán)限管理oracle觸發(fā)器和權(quán)限管理觸發(fā)器觸發(fā)器是當(dāng)特定事件出現(xiàn)時自動執(zhí)行的存儲過程特定事件可以是執(zhí)行更新的DML語句和DDL語句觸發(fā)器不能被顯式調(diào)用觸發(fā)器的功能:自動生成數(shù)據(jù)自定義復(fù)雜的安全權(quán)限提供審計和日志記錄啟用復(fù)雜的業(yè)務(wù)邏輯觸發(fā)器觸發(fā)器是當(dāng)特定事件出現(xiàn)時自動執(zhí)行的存儲過程創(chuàng)建觸發(fā)器的語法CREATE[ORREPLACE]TRIGGERtrigger_nameAFTER|BEFORE|INSTEADOF[INSERT][[OR]UPDATE[OFcolumn_list]][[OR]DELETE]ONtable_or_view_name[REFERENCING{OLD[AS]old/NEW[AS]new}][FOREACHROW][WHEN(condition)]pl/sql_block;創(chuàng)建觸發(fā)器的語法CREATE[ORREPLACE]TR觸發(fā)器的組成部分-1觸發(fā)器由三部分組成:觸發(fā)器語句(事件)定義激活觸發(fā)器的DML事件和DDL事件觸發(fā)器限制執(zhí)行觸發(fā)器的條件,該條件必須為真才能激活觸發(fā)器觸發(fā)器操作(主體)包含一些SQL語句和代碼,它們在發(fā)出了觸發(fā)器語句且觸發(fā)限制的值為真時運(yùn)行觸發(fā)器的組成部分-1觸發(fā)器由三部分組成:觸發(fā)器的組成部分-2SQL>CREATEORREPLACETRIGGERtrig_sal AFTERUPDATEOFempsalONsalary_records

…觸發(fā)器語句為salary_records表創(chuàng)建trig-sal觸發(fā)器在更新emp_sal列之后激活觸發(fā)器觸發(fā)器限制SQL> … FOREACHROW WHEN(NEW.empsal>OLD.empsal) DECLARE Sal_diffNUMBER; … 只有在WHEN子句中的條件得到滿足時,才激活trig_sal觸發(fā)器觸發(fā)器操作SQL>… BEGIN sal_diff:=:NEW.empsal-:OLD.empsal; DBMS_OUTPUT.PUT_LINE(‘工資差額:’sal_diff); END;如果WHEN子句中的條件得到滿足,將執(zhí)行BEGIN塊中的代碼觸發(fā)器的組成部分-2SQL>CREATEORREPL觸發(fā)器的組成部分-3Oracle數(shù)據(jù)庫更新表保存更新激活觸發(fā)器AFTER觸發(fā)器的工作原理BEFORE觸發(fā)器的工作原理更新表激活觸發(fā)器保存更新Oracle數(shù)據(jù)庫觸發(fā)器的組成部分-3Oracle更新表保存更新激活觸發(fā)器A創(chuàng)建觸發(fā)器CREATEORREPLACETRIGGERaiu_itemfileAFTERINSERTONitemfileFOREACHROWBEGINIF(:NEW.qty_hand=0)THENDBMS_OUTPUT.PUT_LINE('警告:已插入記錄,但數(shù)量為零');ELSEDBMS_OUTPUT.PUT_LINE(‘已插入記錄');ENDIF;END;/創(chuàng)建觸發(fā)器CREATEORREPLACETRIGGER觸發(fā)器類型-1觸發(fā)器的類型有:觸發(fā)器類型模式(DDL)觸發(fā)器DML觸發(fā)器數(shù)據(jù)庫級觸發(fā)器語句級觸發(fā)器行級觸發(fā)器INSTEADOF觸發(fā)器觸發(fā)器類型-1觸發(fā)器的類型有:觸發(fā)器類型模式(DDL)DML觸發(fā)器類型-2DDL觸發(fā)器數(shù)據(jù)庫級觸發(fā)器DML觸發(fā)器語句級觸發(fā)器行級觸發(fā)器INSTEADOF觸發(fā)器在模式中執(zhí)行DDL語句時執(zhí)行在發(fā)生打開、關(guān)閉、登錄和退出數(shù)據(jù)庫等系統(tǒng)事件時執(zhí)行在對表或視圖執(zhí)行DML語句時執(zhí)行無論受影響的行數(shù)是多少,都只執(zhí)行一次對DML語句修改的每個行執(zhí)行一次用于用戶不能直接使用DML語句修改的視圖觸發(fā)器類型-2DDL觸發(fā)器在模式中執(zhí)行DDL語句時執(zhí)行觸發(fā)器類型-3行級觸發(fā)器SQL>CREATETABLETEST_TRG(IDNUMBER,NAMEVARCHAR2(20));SQL>CREATESEQUENCESEQ_TEST;SQL>CREATEORREPLACETRIGGERBI_TEST_TRGBEFOREINSERTORUPDATEOFIDONTEST_TRGFOREACHROWBEGINIFINSERTINGTHENSELECTSEQ_TEST.NEXTVALINTO:NEW.IDFROMDUAL;ELSERAISE_APPLICATION_ERROR(-20020,'不允許更新ID值!');ENDIF;END;/觸發(fā)器類型-3行級觸發(fā)器SQL>CREATETABLE觸發(fā)器類型-4SQL>CREATEORREPLACETRIGGERtrgdemoAFTERINSERTORUPDATEORDELETEONorder_masterBEGINIFUPDATINGTHENDBMS_OUTPUT.PUT_LINE(‘已更新ORDER_MASTER中的數(shù)據(jù)');ELSIFDELETINGTHENDBMS_OUTPUT.PUT_LINE(‘已刪除ORDER_MASTER中的數(shù)據(jù)');ELSIFINSERTINGTHENDBMS_OUTPUT.PUT_LINE(‘已在ORDER_MASTER中插入數(shù)據(jù)');ENDIF;END;/語句級觸發(fā)器觸發(fā)器類型-4SQL>CREATEORREPLACE觸發(fā)器類型-5SQL>CREATEORREPLACETRIGGERupd_ord_viewINSTEADOFUPDATEONord_viewFOREACHROWBEGIN UPDATEorder_masterSETvencode=:NEW.vencode WHEREorderno=:NEW.orderno; DBMS_OUTPUT.PUT_LINE(‘已激活觸發(fā)器');END;/INSTEADOF觸發(fā)器觸發(fā)器類型-5SQL>CREATEORREPLACE觸發(fā)器類型-6SQL>CREATETABLEdropped_obj(obj_nameVARCHAR2(30),obj_typeVARCHAR2(20),drop_dateDATE);SQL>CREATEORREPLACETRIGGERlog_drop_objAFTERDROPONSCHEMABEGININSERTINTOdropped_objVALUES(ORA_DICT_OBJ_NAME,ORA_DICT_OBJ_TYPE,SYSDATE);END;/模式觸發(fā)器觸發(fā)器類型-6SQL>CREATETABLEdropp啟用和禁用觸發(fā)器刪除觸發(fā)器啟用、禁用和刪除觸發(fā)器SQL>ALTERTRIGGERaiu_itemfileDISABLE;SQL>ALTERTRIGGERaiu_itemfileENABLE;SQL>DROPTRIGGERaiu_itemfile;啟用和禁用觸發(fā)器啟用、禁用和刪除觸發(fā)器SQL>ALTER查看有關(guān)觸發(fā)器的信息SQL>SELECTTRIGGER_NAMEFROMUSER_TRIGGERSWHERETABLE_NAME='EMP';SQL>SELECTTRIGGER_TYPE,TRIGGERING_EVENT,WHEN_CLAUSEFROMUSER_TRIGGERSWHERETRIGGER_NAME='BIU_EMP_DEPTNO';USER_TRIGGERS數(shù)據(jù)字典視圖包含有關(guān)觸發(fā)器的信息查看有關(guān)觸發(fā)器的信息SQL>SELECTTRIGGER_權(quán)限權(quán)限是執(zhí)行一種特殊類型的SQL語句或存取另一用戶的對象的權(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)限:在指定的表、視圖、序列、過程、函數(shù)或包上執(zhí)行特殊動作的權(quán)利。權(quán)限權(quán)限是執(zhí)行一種特殊類型的SQL語句或存取另一用戶的對象的角色為相關(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ù)庫中,每一個角色名必須唯一。角色名與用戶不同,角色不包含在任何模式中,所以建立角色的用戶被刪除時不影響該角色。建立角色的目的為數(shù)據(jù)庫應(yīng)用管理權(quán)限和為用戶組管理權(quán)限。相對應(yīng)的角色稱為應(yīng)用角色和用戶角色。應(yīng)用角色是授予的運(yùn)行數(shù)據(jù)庫應(yīng)用所需的全部權(quán)限。用戶角色是為具有公開權(quán)限需求的一組數(shù)據(jù)庫用戶而建立的。用戶權(quán)限管理是受應(yīng)用角色或權(quán)限授權(quán)給用戶角色所控制,然后將用戶角色授權(quán)給相應(yīng)的用戶。角色為相關(guān)權(quán)限的命名組,可授權(quán)給用戶和角色。數(shù)據(jù)庫角色包含下利用角色對權(quán)限管理的優(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)限需要改變,只需修改角色的權(quán)限,所有授給該角色的全部用戶的安全域?qū)⒆詣拥胤从硨巧鞯男薷?。?quán)限的選擇可用性,授權(quán)給用戶的角色可選擇地使其可用或不可用。應(yīng)用可知性,當(dāng)用戶經(jīng)用戶名執(zhí)行應(yīng)用時,該數(shù)據(jù)庫應(yīng)用可查詢字典,將自動地選擇使角色可用或不可用。應(yīng)用安全性,角色使用可由口令保護(hù),應(yīng)用可提供正確的口令使用角色,利用角色對權(quán)限管理的優(yōu)點ORACEL利用角色更容易地進(jìn)行權(quán)限創(chuàng)建角色-1使用CREATEROLE語句可以創(chuàng)建一個新的角色,執(zhí)行該語句的用戶必須具有CREATEROLE系統(tǒng)權(quán)限。在角色剛剛創(chuàng)建時,它并不具有任何權(quán)限,這時的角色是沒有用處的。因此,在創(chuàng)建角色之后,通常會立即為它授予權(quán)限。例如:利用下面的語句創(chuàng)建了一個名為OPT_ROLE的角色,并且為它授予了一些對象權(quán)限和系統(tǒng)權(quán)限:CREATEROLEOPT_ROLE;GRANTSELECTONsal_historyTOOPT_ROLE;GRANTINSERT,UPDATEONmount_entryTOOPT_ROLE;GRANTCREATEVIEWTOOPT_ROLE;創(chuàng)建角色-1使用CREATEROLE語句可以創(chuàng)建一個新的角授予權(quán)限或角色-授予系統(tǒng)權(quán)限在GRANT關(guān)鍵字之后指定系統(tǒng)權(quán)限的名稱,然后在TO關(guān)鍵字之后指定接受權(quán)限的用戶名,即可將系統(tǒng)權(quán)限授予指定的用戶。例如:利用下面的語句可以相關(guān)權(quán)限授予用戶chenjie:GRANTCREATEUSER,ALTERUSER,DROPUSERTOchenjieWITHADMINOPTION;授予權(quán)限或角色-授予系統(tǒng)權(quán)限在GRANT關(guān)鍵字之后指定系統(tǒng)授予權(quán)限或角色-授予對象權(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)限可以授予表或視圖中的字段,它們是分別是INSERT,UPDATE和REFERENCES對象例如:利用下面的語句可以將CUSTOMER表的SELECT和INSERT,UPDATE對象權(quán)限授予用戶chenqian:GRANTSELECT,INSERT(CUSTOMER_ID,CUSTOMER_name), UPDATE(desc)ONCUSTOMERTOchenqianWITHGRANTOPTION;在授予對象權(quán)限時,可以使用一次關(guān)鍵字ALL或ALLPRIVILEGES將某個對象的所有對象權(quán)限全部授予指定的用戶。授予權(quán)限或角色-授予對象權(quán)限Oracle對象權(quán)限指用戶在指授予權(quán)限或角色-授予角色在GRANT關(guān)鍵字之后指定角色的名稱,然后在TO關(guān)鍵字之后指定用戶名,即可將角色授予指定的用戶。Oracle數(shù)據(jù)庫系統(tǒng)預(yù)先定義了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)利。授予權(quán)限或角色-授予角色在GRANT關(guān)鍵字之后指定角色的名回收權(quán)限或角色使用REVOKE語句可以回收己經(jīng)授予用戶(或角色)的系統(tǒng)權(quán)限、對象權(quán)限與角色,執(zhí)行回收權(quán)限操作的用戶同時必須具有授予相同權(quán)限的能力。例如:利用下面的語句可以回收已經(jīng)授予用戶chenqian的SELECT和UPDATE對象權(quán)限:REVOKESELECT,UPDATEONCUSTOMERFROMchenqian;利用下面的語句可以回收已經(jīng)授予用戶chenjie的CREATEANYTABLE系統(tǒng)權(quán)限:REVOKECREATEANYTABLEFROMchenjie;利用下面的語句可以回收己經(jīng)授予用戶chenjie的OPT_ROLE角色:REVOKEOPT_ROLEFROMchenjie;在回收對象權(quán)限時,可以使用關(guān)鍵字ALL或ALLPRIVILEGES將某個對象的所有對象權(quán)限全部回收。例如:利用下面的語句可以回收己經(jīng)授予用戶chenqian的CUSTOMER表的所有對象權(quán)限:REVOKEALLONCUSTOMERFROMchenjie;回收權(quán)限或角色使用REVOKE語句可以回收己經(jīng)授予用戶(或角激活和禁用角色一個用戶可以同時被授予多個角色,但是并不是所有的這些角色都同時起作用。角色可以處于兩種狀態(tài):激活狀態(tài)或禁用狀態(tài),禁用狀態(tài)的角色所具有權(quán)限并不生效。當(dāng)用戶連接到數(shù)據(jù)庫中時,只有他的默認(rèn)角色(DefaultRole)處于激活狀態(tài)。在ALTERUSER角色中使用DEFAULTROLE子句可以改變用戶的默認(rèn)角色。例如:如果要將用戶所擁有的一個角色設(shè)置為默認(rèn)角色,可以使用下面的語句:ALTERUSERchenjieDEFAULTROLEconnect,OPT_ROLE在用戶會話的過程中,還可以使用SETROLE語句來激活或禁用他所擁有的角色。用戶所同時激活的最大角色數(shù)目由初始化參數(shù)ENABLEDROLES決定(默認(rèn)值為20)。如果角色在創(chuàng)建時使用了IDENTIFIEDBY子句,則在使用SETROLE語句激活角色時也需要在IDENTIFIEDBY子句中提供口令。如果要激活用戶所擁有的所有角色,可以使用下面的語句:SETROLEALL;激活和禁用角色一個用戶可以同時被授予多個角色,但是并不是所有總結(jié)子程序是命名的PL/SQL塊,可帶參數(shù)并可在需要時隨時調(diào)用有兩種類型的PL/SQL子程序,即過程和函數(shù)過程用戶執(zhí)行特定的任務(wù),函數(shù)用于執(zhí)行任務(wù)并返回值觸發(fā)器是當(dāng)特定事件出現(xiàn)時自動執(zhí)行的存儲過程觸發(fā)器分為DML觸發(fā)器、DDL觸發(fā)器和數(shù)據(jù)庫級觸發(fā)器三種類型DML觸發(fā)器的三種類型包括行級觸發(fā)器、語句級觸發(fā)器和INSTEADOF觸發(fā)器總結(jié)子程序是命名的PL/SQL塊,可帶參數(shù)并可在需要時隨oracle觸發(fā)器和權(quán)限管理oracle觸發(fā)器和權(quán)限管理觸發(fā)器觸發(fā)器是當(dāng)特定事件出現(xiàn)時自動執(zhí)行的存儲過程特定事件可以是執(zhí)行更新的DML語句和DDL語句觸發(fā)器不能被顯式調(diào)用觸發(fā)器的功能:自動生成數(shù)據(jù)自定義復(fù)雜的安全權(quán)限提供審計和日志記錄啟用復(fù)雜的業(yè)務(wù)邏輯觸發(fā)器觸發(fā)器是當(dāng)特定事件出現(xiàn)時自動執(zhí)行的存儲過程創(chuàng)建觸發(fā)器的語法CREATE[ORREPLACE]TRIGGERtrigger_nameAFTER|BEFORE|INSTEADOF[INSERT][[OR]UPDATE[OFcolumn_list]][[OR]DELETE]ONtable_or_view_name[REFERENCING{OLD[AS]old/NEW[AS]new}][FOREACHROW][WHEN(condition)]pl/sql_block;創(chuàng)建觸發(fā)器的語法CREATE[ORREPLACE]TR觸發(fā)器的組成部分-1觸發(fā)器由三部分組成:觸發(fā)器語句(事件)定義激活觸發(fā)器的DML事件和DDL事件觸發(fā)器限制執(zhí)行觸發(fā)器的條件,該條件必須為真才能激活觸發(fā)器觸發(fā)器操作(主體)包含一些SQL語句和代碼,它們在發(fā)出了觸發(fā)器語句且觸發(fā)限制的值為真時運(yùn)行觸發(fā)器的組成部分-1觸發(fā)器由三部分組成:觸發(fā)器的組成部分-2SQL>CREATEORREPLACETRIGGERtrig_sal AFTERUPDATEOFempsalONsalary_records

…觸發(fā)器語句為salary_records表創(chuàng)建trig-sal觸發(fā)器在更新emp_sal列之后激活觸發(fā)器觸發(fā)器限制SQL> … FOREACHROW WHEN(NEW.empsal>OLD.empsal) DECLARE Sal_diffNUMBER; … 只有在WHEN子句中的條件得到滿足時,才激活trig_sal觸發(fā)器觸發(fā)器操作SQL>… BEGIN sal_diff:=:NEW.empsal-:OLD.empsal; DBMS_OUTPUT.PUT_LINE(‘工資差額:’sal_diff); END;如果WHEN子句中的條件得到滿足,將執(zhí)行BEGIN塊中的代碼觸發(fā)器的組成部分-2SQL>CREATEORREPL觸發(fā)器的組成部分-3Oracle數(shù)據(jù)庫更新表保存更新激活觸發(fā)器AFTER觸發(fā)器的工作原理BEFORE觸發(fā)器的工作原理更新表激活觸發(fā)器保存更新Oracle數(shù)據(jù)庫觸發(fā)器的組成部分-3Oracle更新表保存更新激活觸發(fā)器A創(chuàng)建觸發(fā)器CREATEORREPLACETRIGGERaiu_itemfileAFTERINSERTONitemfileFOREACHROWBEGINIF(:NEW.qty_hand=0)THENDBMS_OUTPUT.PUT_LINE('警告:已插入記錄,但數(shù)量為零');ELSEDBMS_OUTPUT.PUT_LINE(‘已插入記錄');ENDIF;END;/創(chuàng)建觸發(fā)器CREATEORREPLACETRIGGER觸發(fā)器類型-1觸發(fā)器的類型有:觸發(fā)器類型模式(DDL)觸發(fā)器DML觸發(fā)器數(shù)據(jù)庫級觸發(fā)器語句級觸發(fā)器行級觸發(fā)器INSTEADOF觸發(fā)器觸發(fā)器類型-1觸發(fā)器的類型有:觸發(fā)器類型模式(DDL)DML觸發(fā)器類型-2DDL觸發(fā)器數(shù)據(jù)庫級觸發(fā)器DML觸發(fā)器語句級觸發(fā)器行級觸發(fā)器INSTEADOF觸發(fā)器在模式中執(zhí)行DDL語句時執(zhí)行在發(fā)生打開、關(guān)閉、登錄和退出數(shù)據(jù)庫等系統(tǒng)事件時執(zhí)行在對表或視圖執(zhí)行DML語句時執(zhí)行無論受影響的行數(shù)是多少,都只執(zhí)行一次對DML語句修改的每個行執(zhí)行一次用于用戶不能直接使用DML語句修改的視圖觸發(fā)器類型-2DDL觸發(fā)器在模式中執(zhí)行DDL語句時執(zhí)行觸發(fā)器類型-3行級觸發(fā)器SQL>CREATETABLETEST_TRG(IDNUMBER,NAMEVARCHAR2(20));SQL>CREATESEQUENCESEQ_TEST;SQL>CREATEORREPLACETRIGGERBI_TEST_TRGBEFOREINSERTORUPDATEOFIDONTEST_TRGFOREACHROWBEGINIFINSERTINGTHENSELECTSEQ_TEST.NEXTVALINTO:NEW.IDFROMDUAL;ELSERAISE_APPLICATION_ERROR(-20020,'不允許更新ID值!');ENDIF;END;/觸發(fā)器類型-3行級觸發(fā)器SQL>CREATETABLE觸發(fā)器類型-4SQL>CREATEORREPLACETRIGGERtrgdemoAFTERINSERTORUPDATEORDELETEONorder_masterBEGINIFUPDATINGTHENDBMS_OUTPUT.PUT_LINE(‘已更新ORDER_MASTER中的數(shù)據(jù)');ELSIFDELETINGTHENDBMS_OUTPUT.PUT_LINE(‘已刪除ORDER_MASTER中的數(shù)據(jù)');ELSIFINSERTINGTHENDBMS_OUTPUT.PUT_LINE(‘已在ORDER_MASTER中插入數(shù)據(jù)');ENDIF;END;/語句級觸發(fā)器觸發(fā)器類型-4SQL>CREATEORREPLACE觸發(fā)器類型-5SQL>CREATEORREPLACETRIGGERupd_ord_viewINSTEADOFUPDATEONord_viewFOREACHROWBEGIN UPDATEorder_masterSETvencode=:NEW.vencode WHEREorderno=:NEW.orderno; DBMS_OUTPUT.PUT_LINE(‘已激活觸發(fā)器');END;/INSTEADOF觸發(fā)器觸發(fā)器類型-5SQL>CREATEORREPLACE觸發(fā)器類型-6SQL>CREATETABLEdropped_obj(obj_nameVARCHAR2(30),obj_typeVARCHAR2(20),drop_dateDATE);SQL>CREATEORREPLACETRIGGERlog_drop_objAFTERDROPONSCHEMABEGININSERTINTOdropped_objVALUES(ORA_DICT_OBJ_NAME,ORA_DICT_OBJ_TYPE,SYSDATE);END;/模式觸發(fā)器觸發(fā)器類型-6SQL>CREATETABLEdropp啟用和禁用觸發(fā)器刪除觸發(fā)器啟用、禁用和刪除觸發(fā)器SQL>ALTERTRIGGERaiu_itemfileDISABLE;SQL>ALTERTRIGGERaiu_itemfileENABLE;SQL>DROPTRIGGERaiu_itemfile;啟用和禁用觸發(fā)器啟用、禁用和刪除觸發(fā)器SQL>ALTER查看有關(guān)觸發(fā)器的信息SQL>SELECTTRIGGER_NAMEFROMUSER_TRIGGERSWHERETABLE_NAME='EMP';SQL>SELECTTRIGGER_TYPE,TRIGGERING_EVENT,WHEN_CLAUSEFROMUSER_TRIGGERSWHERETRIGGER_NAME='BIU_EMP_DEPTNO';USER_TRIGGERS數(shù)據(jù)字典視圖包含有關(guān)觸發(fā)器的信息查看有關(guān)觸發(fā)器的信息SQL>SELECTTRIGGER_權(quán)限權(quán)限是執(zhí)行一種特殊類型的SQL語句或存取另一用戶的對象的權(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)限:在指定的表、視圖、序列、過程、函數(shù)或包上執(zhí)行特殊動作的權(quán)利。權(quán)限權(quán)限是執(zhí)行一種特殊類型的SQL語句或存取另一用戶的對象的角色為相關(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ù)庫中,每一個角色名必須唯一。角色名與用戶不同,角色不包含在任何模式中,所以建立角色的用戶被刪除時不影響該角色。建立角色的目的為數(shù)據(jù)庫應(yīng)用管理權(quán)限和為用戶組管理權(quán)限。相對應(yīng)的角色稱為應(yīng)用角色和用戶角色。應(yīng)用角色是授予的運(yùn)行數(shù)據(jù)庫應(yīng)用所需的全部權(quán)限。用戶角色是為具有公開權(quán)限需求的一組數(shù)據(jù)庫用戶而建立的。用戶權(quán)限管理是受應(yīng)用角色或權(quán)限授權(quán)給用戶角色所控制,然后將用戶角色授權(quán)給相應(yīng)的用戶。角色為相關(guān)權(quán)限的命名組,可授權(quán)給用戶和角色。數(shù)據(jù)庫角色包含下利用角色對權(quán)限管理的優(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)限需要改變,只需修改角色的權(quán)限,所有授給該角色的全部用戶的安全域?qū)⒆詣拥胤从硨巧鞯男薷?。?quán)限的選擇可用性,授權(quán)給用戶的角色可選擇地使其可用或不可用。應(yīng)用可知性,當(dāng)用戶經(jīng)用戶名執(zhí)行應(yīng)用時,該數(shù)據(jù)庫應(yīng)用可查詢字典,將自動地選擇使角色可用或不可用。應(yīng)用安全性,角色使用可由口令保護(hù),應(yīng)用可提供正確的口令使用角色,利用角色對權(quán)限管理的優(yōu)點ORACEL利用角色更容易地進(jìn)行權(quán)限創(chuàng)建角色-1使用CREATEROLE語句可以創(chuàng)建一個新的角色,執(zhí)行該語句的用戶必須具有CREATEROLE系統(tǒng)權(quán)限。在角色剛剛創(chuàng)建時,它并不具有任何權(quán)限,這時的角色是沒有用處的。因此,在創(chuàng)建角色之后,通常會立即為它授予權(quán)限。例如:利用下面的語句創(chuàng)建了一個名為OPT_ROLE的角色,并且為它授予了一些對象權(quán)限和系統(tǒng)權(quán)限:CREATEROLEOPT_ROLE;GRANTSELECTONsal_historyTOOPT_ROLE;GRANTINSERT,UPDATEONmount_entryTOOPT_ROLE;GRANTCREATEVIEWTOOPT_ROLE;創(chuàng)建角色-1使用CREATEROLE語句可以創(chuàng)建一個新的角授予權(quán)限或角色-授予系統(tǒng)權(quán)限在GRANT關(guān)鍵字之后指定系統(tǒng)權(quán)限的名稱,然后在TO關(guān)鍵字之后指定接受權(quán)限的用戶名,即可將系統(tǒng)權(quán)限授予指定的用戶。例如:利用下面的語句可以相關(guān)權(quán)限授予用戶chenjie:GRANTCREATEUSER,ALTERUSER,DROPUSERTOchenjieWITHADMINOPTION;授予權(quán)限或角色-授予系統(tǒng)權(quán)限在GRANT關(guān)鍵字之后指定系統(tǒng)授予權(quán)限或角色-授予對象權(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)限可以授予表或視圖中的字段,它們是分別是INSERT,UPDATE和REFERENCES對象例如:利用下面的語句可以將CUSTOMER表的SELECT和INSERT,UPDATE對象權(quán)限授予用戶chenqian:GRANTSELECT,INSERT(CUSTOMER_ID,CUSTOMER_name), UPDATE(desc)ONCUSTOMERTOchenqianWITHGRANTOPTION;在授予對象權(quán)限時,可以使用一次關(guān)鍵字ALL或ALLPRIVILEGES將某個對象的所有對象權(quán)限全部授予指定的用戶。授予權(quán)限或角色-授予對象權(quán)限Oracle對象權(quán)限指用戶在指授予權(quán)限或角色-授予角色在GRANT關(guān)鍵字之后指定角色的名稱,然后在TO關(guān)鍵字之后指定用戶名,即可將角色授予指定的用戶。Oracle數(shù)據(jù)庫系統(tǒng)預(yù)先定義了CONNECT、RESOU

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論