




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、創建(chungjin)觸發器的語法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頁。觸發器的組成部分(z chn b fn)-1觸發器由三部分組成:觸發器語句(事件)定義激活觸發器的 DML 事件和 DDL
2、事件觸發器限制執行(zhxng)觸發器的條件,該條件必須為真才能激活觸發器觸發器操作(主體)包含一些 SQL 語句和代碼,它們在發出了觸發器語句且觸發限制的值為真時運行第2頁/共24頁第二頁,共25頁。觸發器的組成部分(z chn b fn)-2 SQL CREATE OR REPLACE TRIGGER trig_salAFTER UPDATE OF empsal ON salary_records觸發器語句(yj)為 salary_records 表創建(chungjin) trig-sal 觸發器在更新 emp_sal 列之后激活觸發器觸發器限制SQL FOR EACH ROWWHEN
3、(NEW.empsalOLD.empsal)DECLARESal_diff NUMBER;只有在WHEN子句中的條件得到滿足時,才激活trig_sal 觸發器觸發器操作SQL BEGIN sal_diff:=:NEW.empsal-:OLD.empsal; DBMS_OUTPUT.PUT_LINE(工資差額:sal_diff);END;如果WHEN子句中的條件得到滿足,將執行BEGIN 塊中的代碼第3頁/共24頁第三頁,共25頁。觸發器的組成部分(z chn b fn)-3Oracle 數據庫更新(gngxn)表表保存(bocn)更新激活觸發器觸發器AFTER 觸發器的工作原理BEFORE 觸
4、發器的工作原理更新表表激活觸發器觸發器保存更新Oracle 數據庫第4頁/共24頁第四頁,共25頁。創建(chungjin)觸發器CREATE OR REPLACE TRIGGER aiu_itemfileAFTER INSERTON itemfileFOR EACH ROWBEGIN IF (:NEW.qty_hand = 0) THEN DBMS_OUTPUT.PUT_LINE(警告:已插入(ch r)記錄,但數量為零); ELSE DBMS_OUTPUT.PUT_LINE(已插入(ch r)記錄); END IF;END;/第5頁/共24頁第五頁,共25頁。觸發器類型(lixng)-1
5、觸發器的類型(lixng)有:觸發器類型(lixng)模式(DDL)觸發器DML觸發器數據庫級觸發器語句級觸發器行級觸發器INSTEAD OF觸發器第6頁/共24頁第六頁,共25頁。觸發器類型(lixng)-2DDL 觸發器數據庫級觸發器DML 觸發器語句(yj)級觸發器行級觸發器INSTEAD OF 觸發器在模式(msh)中執行 DDL 語句時執行在發生打開、關閉、登錄和退出數據庫等系統事件時執行在對表或視圖執行DML語句時執行無論受影響的行數是多少,都只執行一次對DML語句修改的每個行執行一次用于用戶不能直接使用 DML 語句修改的視圖第7頁/共24頁第七頁,共25頁。觸發器類型(lixn
6、g)-3 行級觸發器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頁。觸發器類型(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 中的數據(shj); ELSIF DELETING THEN DBMS_OUTPUT.PUT_LINE(已刪除 ORDER_MASTER 中的數據(shj); ELSIF INSERTING
8、THEN DBMS_OUTPUT.PUT_LINE(已在 ORDER_MASTER 中插入數據(shj); END IF;END;/ 語句(yj)級觸發器第9頁/共24頁第九頁,共25頁。觸發器類型(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)觸發器); END; / INSTEAD OF 觸發器第10頁/共24頁第十頁,共25頁。觸發器類型(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)觸發器第11頁/共24頁第十一頁,共25頁。 啟用(qyng)和禁用觸發器 刪除觸發器啟用(qyng)、禁用和刪除觸發器SQL ALTER TRIGGER aiu_itemfile DISABLE;SQL ALTER TRIGGER aiu_itemfile ENABLE;SQL DROP TRIGGER aiu_itemfile;第12頁/共24頁第十二頁,共25頁。查看有關(yugun)觸發器的信息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 數據(shj)字典視圖包含有關觸發器的信息第13頁/共24頁第十三頁,共25頁。權限(qunxin) 權限是執行一種特殊類型的SQL語句(yj)或存取另一用戶的對象的權力。有兩類權限:系統權限和對象權限。 系統權限:是執行一處特殊動作或者在對象類型上執行一種特殊動作的權利。 系統權限可授權給用戶或角色,一般,系統權限只授予管理人員和應用開發人員,終端用戶不需要這些相關功能。 對象權限:在
12、指定的表、視圖、序列、過程、函數或包上執行特殊動作的權利。第14頁/共24頁第十四頁,共25頁。角色(ju s) 為相關權限的命名組,可授權給用戶和角色。數據庫角色包含下列功能: 一個角色可授予系統權限或對象權限。 一個角色可授權給其它角色,但不能循環授權。 任何角色可授權給任何數據庫用戶。 授權給用戶的每一角色可以是可用的或者不可用的。 一個間接授權角色對用戶可顯式地使其可用或不可用。 在一個數據庫中,每一個角色名必須唯一。角色名與用戶不同,角色不包含在任何模式中,所以建立角色的用戶被刪除(shnch)時不影響該角色。 建立角色的目的 為數據庫應用管理權限和為用戶組管理權限。相對應的角色稱為
13、應用角色和用戶角色。 應用角色是授予的運行數據庫應用所需的全部權限。 用戶角色是為具有公開權限需求的一組數據庫用戶而建立的。用戶權限管理是受應用角色或權限授權給用戶角色所控制,然后將用戶角色授權給相應的用戶。第15頁/共24頁第十五頁,共25頁。利用角色對權限(qunxin)管理的優點 ORACEL利用角色更容易地進行權限管理。有下列優點: 減少權限管理,不要顯式地將同一權限組授權給幾個用戶,只需將這權限組授給角色,然后將角色授權給每一用戶。 動態權限管理,如果一組權限需要(xyo)改變,只需修改角色的權限,所有授給該角色的全部用戶的安全域將自動地反映對角色所作的修改。 權限的選擇可用性,授權
14、給用戶的角色可選擇地使其可用或不可用。 應用可知性,當用戶經用戶名執行應用時,該數據庫應用可查詢字典,將自動地選擇使角色可用或不可用。 應用安全性,角色使用可由口令保護,應用可提供正確的口令使用角色,第16頁/共24頁第十六頁,共25頁。創建(chungjin)角色-1 使用CREATE ROLE語句可以創建一個新的角色,執行該語句的用戶必須具有CREATE ROLE系統權限。 在角色剛剛創建時,它并不具有任何權限,這時的角色是沒有用處的。因此,在創建角色之后,通常會立即(lj)為它授予權限。例如:利用下面的語句創建了一個名為OPT_ROLE的角色,并且為它授予了一些對象權限和系統權限: 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頁。授予權限或角色(ju s)- 授予系統權限 在GRANT關鍵字之后(zhhu)指定系統權限的名稱,然后在TO關鍵字之后(zhhu)指定接受權限的用戶名,即可將系統權限授予指定的用戶。 例如:利用下面的語句可以相關權限授予用戶chenjie: GRANT CREATE USER,ALT
16、ER USER,DROP USER TO chenjie WITH ADMIN OPTION;第18頁/共24頁第十八頁,共25頁。授予權限或角色(ju s)- 授予對象權限 Oracle對象權限指用戶在指定的表上進行特殊操作的權利。 在GRANT關鍵字之后指定對象權限的名稱,然后在ON關鍵字后指定對象名稱,最后在TO關鍵字之后指定接受權限的用戶名,即可將指定對象的對象權限授予指定的用戶。 使用一條GRANT語句可以同時授予用戶多個對象權限,各個權限名稱之間用逗號分隔。 有三類對象權限可以授予表或視圖中的字段,它們是分別(fnbi)是INSERT,UPDATE和REFERENCES對象 例如:
17、利用下面的語句可以將CUSTOMER表的SELECT和INSERT,UPDATE對象權限授予用戶chenqian: GRANT SELECT,INSERT(CUSTOMER_ID,CUSTOMER_name),UPDATE(desc) ON CUSTOMER TO chenqian WITH GRANT OPTION; 在授予對象權限時,可以使用一次關鍵字ALL或ALL PRIVILEGES將某個對象的所有對象權限全部授予指定的用戶。第19頁/共24頁第十九頁,共25頁。授予權限(qunxin)或角色- 授予角色 在GRANT關鍵字之后指定角色的名稱,然后在TO關鍵字之后指定用戶名,即可將角色
18、授予指定的用戶。Oracle數據庫系統預先(yxin)定義了CONNECT、RESOURCE、DBA、 EXP_FULL_DATABASE、IMP_FULL_DATABASE五個角色。CONNECT具有創建表、視圖、序列等權限;RESOURCE具有創建過程、觸發器、表、序列等權限、DBA具有全部系統權限;EXP_FULL_DATABASE、 IMP_FULL_DATABASE具有卸出與裝入數據庫的權限。 通過查詢sys.dba_sys_privs可以了解每種角色擁有的權利。第20頁/共24頁第二十頁,共25頁。回收權限(qunxin)或角色 使用REVOKE語句可以回收己經授予用戶(或角色)的
19、系統(xtng)權限、對象權限與角色,執行回收權限操作的用戶同時必須具有授予相同權限的能力。 例如:利用下面的語句可以回收已經授予用戶chenqian的SELECT和UPDATE對象權限: REVOKE SELECT,UPDATE ON CUSTOMER FROM chenqian; 利用下面的語句可以回收已經授予用戶chenjie的CREATE ANY TABLE系統(xtng)權限: REVOKE CREATE ANY TABLE FROM chenjie; 利用下面的語句可以回收己經授予用戶chenjie的OPT_ROLE角色: REVOKE OPT_ROLE FROM chenjie;
20、 在回收對象權限時,可以使用關鍵字ALL或ALL PRIVILEGES將某個對象的所有對象權限全部回收。 例如:利用下面的語句可以回收己經授予用戶chenqian的CUSTOMER表的所有對象權限: REVOKE ALL ON CUSTOMER FROM chenjie;第21頁/共24頁第二十一頁,共25頁。激活和禁用(jn yn)角色 一個用戶可以同時被授予多個角色,但是并不是所有的這些角色都同時起作用。角色可以處于兩種狀態:激活狀態或禁用狀態,禁用狀態的角色所具有權限并不生效。 當用戶連接到數據庫中時,只有他的默認角色(Default Role)處于激活狀態。在ALTER USER角色中使用DEFAULT ROLE子句可以改變用戶的默認角色。 例如:如果(rgu)要將用戶所擁有的一個角色設置為默認角色,可以使用下面的語句: ALTER USER chenjie DEFAULT ROLE connect,OPT_ROLE 在用戶會話
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國可注射填料行業市場發展趨勢與前景展望戰略研究報告
- 2025年汽車銷售部績效考核與激勵計劃
- 2025-2030中國叉狀領口行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國衛生三通行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國動物蛋白飼料行業市場深度調研及發展趨勢與投資前景預測研究報告
- 2025-2030中國功能性飼料行業市場深度發展趨勢與前景展望戰略研究報告
- 2025-2030中國先天性心臟缺陷封閉裝置行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國催化劑回收行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國低噪聲泵行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國休閑椅行業市場發展趨勢與前景展望戰略研究報告
- 2025上海無固定期限勞動合同范本
- 城市道路養護雨季應對措施
- 中職高教版(2023)語文職業模塊-第五單元:走近大國工匠(一)展示國家工程-了解工匠貢獻【課件】
- 2025年湖南懷化市城市管理和綜合執法局局屬事業單位招聘歷年高頻重點提升(共500題)附帶答案詳解
- 福建省能源石化集團有限責任公司招聘筆試沖刺題2024
- 2018NFPA10便攜式滅火器標準
- 光伏低壓并網試驗施工方案
- 中老年常見病及預防路徑
- 道路橋梁工程考試題庫單選題100道及答案解析
- 【MOOC】數據庫原理及應用-西南石油大學 中國大學慕課MOOC答案
- 教職工消防知識培訓
評論
0/150
提交評論