版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第13章章 觸觸 發(fā)發(fā) 器器本章目標本章目標n理解什么是觸發(fā)器理解什么是觸發(fā)器n掌握如何使用掌握如何使用BEFORE和和AFTER觸發(fā)觸發(fā)器器n掌握行觸發(fā)器和語句觸發(fā)器的區(qū)別與使掌握行觸發(fā)器和語句觸發(fā)器的區(qū)別與使用用n掌握如何使用掌握如何使用INSTEAD OF觸發(fā)器觸發(fā)器13.1 什么是觸發(fā)器什么是觸發(fā)器n基本概念基本概念n數(shù)據(jù)庫觸發(fā)器是存儲于數(shù)據(jù)庫的命名數(shù)據(jù)庫觸發(fā)器是存儲于數(shù)據(jù)庫的命名PL/SQL語句塊,當觸發(fā)事件發(fā)生時它們會隱含執(zhí)行。語句塊,當觸發(fā)事件發(fā)生時它們會隱含執(zhí)行。n執(zhí)行觸發(fā)器的活動被稱為觸發(fā)觸發(fā)器。執(zhí)行觸發(fā)器的活動被稱為觸發(fā)觸發(fā)器。n觸發(fā)事件觸發(fā)事件n處理數(shù)據(jù)庫表的處理數(shù)據(jù)庫
2、表的DML語句語句n特定用戶在特定模式下,或者任何用戶執(zhí)行的特定用戶在特定模式下,或者任何用戶執(zhí)行的DDL語句語句n系統(tǒng)事件系統(tǒng)事件n用戶事件用戶事件n主要用于:主要用于:n執(zhí)行不能通過使用完整性約束來定義的復雜業(yè)執(zhí)行不能通過使用完整性約束來定義的復雜業(yè)務規(guī)則務規(guī)則n維護復雜的安全規(guī)則維護復雜的安全規(guī)則n自動生成衍生列的值自動生成衍生列的值n收集有關訪問數(shù)據(jù)庫表的統(tǒng)計信息收集有關訪問數(shù)據(jù)庫表的統(tǒng)計信息n防止無效的事務防止無效的事務n提供值審計提供值審計創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器n語法語法CREATE OR REPLACE TRIGGER CREATE OR REPLACE TRIGGER trigg
3、er_nametrigger_name BEFORE | AFTER BEFORE | AFTER trigger_eventtrigger_event ON ON table_nametable_name FOR EACH ROW FOR EACH ROW FOLLOWS FOLLOWS anther_triggeranther_trigger ENABLE | DISABLE ENABLE | DISABLE WHEN WHEN coditioncodition trigger_bodytrigger_body; ;Oracle 11g引入的引入的BEFORE觸發(fā)器觸發(fā)器nBEFORE觸發(fā)
4、器適用于:觸發(fā)器適用于:n當在當在INSERT或者或者UPDATE語句完成之前,觸語句完成之前,觸發(fā)器需要提供衍生列的值時;發(fā)器需要提供衍生列的值時;n當觸發(fā)器決定當觸發(fā)器決定INSERT、UPDATE或者或者DELETE語句是否應該允許完成的時候。語句是否應該允許完成的時候。create or replace trigger tr_emp_insert before insert on emp for each rowbegin :new.hiredate := sysdate;end; 【例【例13-1】創(chuàng)建】創(chuàng)建BEFORE觸發(fā)器,使用當前系觸發(fā)器,使用當前系統(tǒng)日期作為新增雇員的雇傭日期
5、。統(tǒng)日期作為新增雇員的雇傭日期。注意:偽記錄注意:偽記錄 :old 和和 :new 只能用于行觸發(fā)器。只能用于行觸發(fā)器。:old 和和 :new 偽記錄偽記錄觸發(fā)語句觸發(fā)語句:old:newINSERT未定義,所有字段均為未定義,所有字段均為NULL語句結束時,將要被插語句結束時,將要被插入的值入的值UPDATE 更新前行的原始值更新前行的原始值語句結束時,將要被更語句結束時,將要被更新的值新的值DELETE行被刪除前的原始值行被刪除前的原始值未定義,所有字段均為未定義,所有字段均為NULLAFTER觸發(fā)器觸發(fā)器nAFTER觸發(fā)器適用于:觸發(fā)器適用于:n當觸發(fā)器應該在當觸發(fā)器應該在DML執(zhí)行之
6、后被觸發(fā)時執(zhí)行之后被觸發(fā)時n當觸發(fā)器執(zhí)行當觸發(fā)器執(zhí)行BEFORE觸發(fā)器中未指明的動作觸發(fā)器中未指明的動作時時create or replace trigger tr_log after delete on deptbegin insert into t_logs(log_time, log_user, log_opt) values(sysdate, user, DELETE ON dept);end; 【例【例13-2】創(chuàng)建】創(chuàng)建AFTER觸發(fā)器,刪除觸發(fā)器,刪除dept表表記錄后,向記錄后,向t_logs日志表中寫入操作信息。日志表中寫入操作信息。WHEN子句子句nWHEN子句只能在行觸發(fā)
7、器中使用。子句只能在行觸發(fā)器中使用。n如果在行觸發(fā)器的定義中給出了如果在行觸發(fā)器的定義中給出了WHEN子子句,觸發(fā)器主體就只對滿足句,觸發(fā)器主體就只對滿足WHEN所定義所定義條件的那些記錄行執(zhí)行。條件的那些記錄行執(zhí)行。n在在WHEN子句的條件中使用子句的條件中使用:new和和:old時,時,都不需要冒號作為前綴。都不需要冒號作為前綴。create or replace trigger tr_sal_2000 before update on emp for each row when (new.sal 2000)begin dbms_output.put_line(execute);end;
8、【例【例13-3】創(chuàng)建觸發(fā)器,當雇員工資大于】創(chuàng)建觸發(fā)器,當雇員工資大于2000時執(zhí)行該觸發(fā)器主體部分。時執(zhí)行該觸發(fā)器主體部分。create or replace trigger tr_sal_2000 before update on emp for each rowbegin if :new.sal 2000 then dbms_output.put_line(execute); end if;end; 等價于:等價于:觸發(fā)器謂詞觸發(fā)器謂詞謂詞謂詞行為特征行為特征INSERTING如果激活語句是如果激活語句是INSERT語句,就為語句,就為TRUE;否則就為否則就為FALSEUPDATIN
9、G如果激活語句是如果激活語句是UPDATE語句,就為語句,就為TRUE;否則就為否則就為FALSEDELETING如果激活語句是如果激活語句是DELETE語句,就為語句,就為TRUE;否則就為否則就為FALSEcreate or replace trigger tr_log after insert or update or delete on deptdeclare v_opt varchar2(100); begin if inserting then v_opt := INSERT ON dept; end if; if updating then v_opt := UPDATE ON
10、dept; end if; if deleting then v_opt := DELETE ON dept; end if; insert into t_logs(log_time, log_user, log_opt) values(sysdate, user, v_opt);end; 【例【例13-4】修改【例】修改【例13-2】創(chuàng)建的觸發(fā)器,根據(jù)】創(chuàng)建的觸發(fā)器,根據(jù)DML操作類型將操作信息寫入日志表操作類型將操作信息寫入日志表t_logs中。中。自治事務自治事務n自治事務是由其他事務(通常被稱為主事務)發(fā)自治事務是由其他事務(通常被稱為主事務)發(fā)起的獨立事務。起的獨立事務。n自治事務會
11、執(zhí)行多個自治事務會執(zhí)行多個DML語句,并且提交或者回語句,并且提交或者回滾操作,而不會提交或者回滾主事務執(zhí)行的滾操作,而不會提交或者回滾主事務執(zhí)行的DML語句。語句。n使用使用AUTONOMOUS_TRANSACTION編譯命令,編譯命令,可以定義一個自治事務??梢远x一個自治事務。n在語句塊的聲明部分使用:在語句塊的聲明部分使用:DECLARE PRAGMA AUTONOMOUS_TRANSACTION;create or replace trigger tr_log after delete on deptdeclare pragma autonomous_transaction;begi
12、n insert into t_logs(log_time, log_user, log_opt) values(sysdate, user, DELETE ON dept); commit;end; 【例【例13-5】使用自治事務修改【例】使用自治事務修改【例13-2】創(chuàng)】創(chuàng)建的觸發(fā)器。建的觸發(fā)器。13.2 觸發(fā)器類型觸發(fā)器類型n觸發(fā)器類型觸發(fā)器類型n行觸發(fā)器行觸發(fā)器n語句觸發(fā)器語句觸發(fā)器n二者的區(qū)別二者的區(qū)別n行觸發(fā)器被觸發(fā)的次數(shù)等于觸發(fā)語句所影響的行觸發(fā)器被觸發(fā)的次數(shù)等于觸發(fā)語句所影響的數(shù)據(jù)行數(shù)。數(shù)據(jù)行數(shù)。n語句觸發(fā)器每執(zhí)行一次觸發(fā)語句,該觸發(fā)器就語句觸發(fā)器每執(zhí)行一次觸發(fā)語句,該觸發(fā)器就
13、執(zhí)行一次,與觸發(fā)語句所影響的數(shù)據(jù)行數(shù)無關。執(zhí)行一次,與觸發(fā)語句所影響的數(shù)據(jù)行數(shù)無關。DML觸發(fā)器的激活順序觸發(fā)器的激活順序n執(zhí)行執(zhí)行BEFORE語句觸發(fā)器語句觸發(fā)器n對受該語句影響的每一行記錄:對受該語句影響的每一行記錄:n執(zhí)行執(zhí)行BEFORE行觸發(fā)器行觸發(fā)器n執(zhí)行該執(zhí)行該DML語句本身語句本身n執(zhí)行執(zhí)行AFTER行觸發(fā)器行觸發(fā)器n執(zhí)行執(zhí)行AFTER語句觸發(fā)器語句觸發(fā)器INSTEAD OF觸發(fā)器觸發(fā)器nINSTEAD OF觸發(fā)器只能定義于數(shù)據(jù)庫視觸發(fā)器只能定義于數(shù)據(jù)庫視圖,作為行觸發(fā)器創(chuàng)建。圖,作為行觸發(fā)器創(chuàng)建。ninstead-of觸發(fā)器用于以下兩種情況:觸發(fā)器用于以下兩種情況:n允許修改一
14、個本來無法修改的視圖。允許修改一個本來無法修改的視圖。n修改視圖中嵌套表列的列。修改視圖中嵌套表列的列。無法修改的視圖無法修改的視圖n如果某視圖查詢執(zhí)行如下任何一個操作,或如果某視圖查詢執(zhí)行如下任何一個操作,或者包含如下任何結果,則視圖就不能被者包含如下任何結果,則視圖就不能被INSERT INSERT 、 UPDATEUPDATE或者或者DELETEDELETE語句修改:語句修改:n集合操作,如集合操作,如UNIONUNION、UNION ALLUNION ALL、INTERSECT INTERSECT 和和 MINUSMINUSn分組函數(shù),如分組函數(shù),如COUNTCOUNT、 AVGAVG
15、、SUMSUM、MAX MAX 和和 MINMINnGROUP BYGROUP BY語句語句nCONNECT BYCONNECT BY或者或者START WITHSTART WITH語句語句nDISTINCTDISTINCT操作符操作符nROWNUMROWNUM偽列偽列create or replace view v_Empas select * from emp where rownum = 5;【例【例13-6】創(chuàng)建視圖,返回前】創(chuàng)建視圖,返回前5名雇員信息。名雇員信息。思考:能否執(zhí)行如下刪除操作?思考:能否執(zhí)行如下刪除操作?delete from v_Emp where empno =
16、7369;create or replace trigger tr_del_v_emp instead of delete on v_empbegin delete from emp where empno = :old.empno;end; 【例【例13-6】創(chuàng)建】創(chuàng)建INSTEAD OF觸發(fā)器,以完觸發(fā)器,以完成刪除操作。成刪除操作。思考:為什么在思考:為什么在INSTEAD OF觸發(fā)器中,沒有使用觸發(fā)器中,沒有使用FOR EACH ROW選項,卻可以使用選項,卻可以使用:OLD偽記錄?偽記錄?系統(tǒng)觸發(fā)器系統(tǒng)觸發(fā)器n系統(tǒng)觸發(fā)器的激發(fā)是基于兩種不同的事件:系統(tǒng)觸發(fā)器的激發(fā)是基于兩種不同的事件
17、:nDDL事件事件n數(shù)據(jù)庫事件數(shù)據(jù)庫事件nDDL事件包括事件包括CREATE、ALTER或或DROP語語句句n數(shù)據(jù)庫事件包括數(shù)據(jù)庫服務器的啟動數(shù)據(jù)庫事件包括數(shù)據(jù)庫服務器的啟動/關閉關閉事件,用戶的登錄事件,用戶的登錄/斷開事件,以及服務器斷開事件,以及服務器錯誤。錯誤。創(chuàng)建系統(tǒng)觸發(fā)器創(chuàng)建系統(tǒng)觸發(fā)器n語法語法CREATE OR REPLACE TRIGGER CREATE OR REPLACE TRIGGER schemaschema.trigger_nametrigger_name BEFORE | AFTER BEFORE | AFTER ddl_event_listddl_event_li
18、st | | database_event_listdatabase_event_list ON DATABASE | ON DATABASE | schemaschema.SCHEMA.SCHEMA when_clausewhen_clause trigger_bodytrigger_body; ;注意:創(chuàng)建系統(tǒng)觸發(fā)器必須擁有系統(tǒng)權限注意:創(chuàng)建系統(tǒng)觸發(fā)器必須擁有系統(tǒng)權限ADMINISTER DATABASE TRIGGERADMINISTER DATABASE TRIGGER系統(tǒng)系統(tǒng)DDL事件和數(shù)據(jù)庫事件事件和數(shù)據(jù)庫事件事件事件允許時機允許時機說明說明STARTUPAFTER啟動數(shù)據(jù)庫實例的
19、時候激活啟動數(shù)據(jù)庫實例的時候激活SHUTDOWNBEFORE關閉數(shù)據(jù)庫實例的時候激活。如關閉數(shù)據(jù)庫實例的時候激活。如果數(shù)據(jù)庫是非正常退出的,這個果數(shù)據(jù)庫是非正常退出的,這個事件可能就不會激活事件可能就不會激活SERVERERRORAFTER只有發(fā)生錯誤,該事件就會激活只有發(fā)生錯誤,該事件就會激活LOGONAFTER用戶成功連接到數(shù)據(jù)庫以后激活用戶成功連接到數(shù)據(jù)庫以后激活LOGOFFBEFORE用戶開始斷開數(shù)據(jù)庫連接的時候用戶開始斷開數(shù)據(jù)庫連接的時候激活激活CREATEBEFORE, AFTER創(chuàng)建模式對象之前或之后激活創(chuàng)建模式對象之前或之后激活ALTERBEFORE, AFTER更改模式對象之
20、前或之后激活更改模式對象之前或之后激活DROPBEFORE, AFTER刪除模式對象之前或之后激活刪除模式對象之前或之后激活數(shù)據(jù)庫與模式觸發(fā)器數(shù)據(jù)庫與模式觸發(fā)器 n系統(tǒng)觸發(fā)器可以在數(shù)據(jù)庫級別或模式級別定義,系統(tǒng)觸發(fā)器可以在數(shù)據(jù)庫級別或模式級別定義, DATABASE DATABASE 和和 SCHEMASCHEMA關鍵字決定了給定系統(tǒng)觸發(fā)關鍵字決定了給定系統(tǒng)觸發(fā)器的級別。器的級別。n數(shù)據(jù)庫級別的觸發(fā)器不管觸發(fā)事件何時發(fā)生都將數(shù)據(jù)庫級別的觸發(fā)器不管觸發(fā)事件何時發(fā)生都將激發(fā),而模式級別觸發(fā)器只有在指定的模式的觸激發(fā),而模式級別觸發(fā)器只有在指定的模式的觸發(fā)事件發(fā)生時才會激發(fā)。發(fā)事件發(fā)生時才會激發(fā)?!?/p>
21、例【例13-7】數(shù)據(jù)庫觸發(fā)器與模式觸發(fā)器的區(qū)別】數(shù)據(jù)庫觸發(fā)器與模式觸發(fā)器的區(qū)別1.以以sys用戶登錄,創(chuàng)建用戶用戶登錄,創(chuàng)建用戶userA、userB,并授與,并授與DBA權限;權限;2.以以userA用戶登錄,創(chuàng)建表用戶登錄,創(chuàng)建表t_logon,用以記錄用,用以記錄用戶的登錄信息;戶的登錄信息;3.創(chuàng)建數(shù)據(jù)庫觸發(fā)器創(chuàng)建數(shù)據(jù)庫觸發(fā)器tr_LogOn_all;4.以以userB用戶登錄,創(chuàng)建模式觸發(fā)器用戶登錄,創(chuàng)建模式觸發(fā)器tr_LogOn_userB;5.在在SQL *Plus中分別以中分別以userA、userB用戶登錄,用戶登錄,查看查看t_logon表中的記錄。表中的記錄。- 創(chuàng)建數(shù)據(jù)
22、庫觸發(fā)器創(chuàng)建數(shù)據(jù)庫觸發(fā)器create or replace trigger tr_LogOn_all after logon on databasebegin insert into t_logon values(1, user, tr_LogOn_all);end;- 創(chuàng)建創(chuàng)建模式模式觸發(fā)器觸發(fā)器create or replace trigger tr_LogOn_UserB after logon on schemabegin insert into userA.t_logon values(2, user, tr_LogOn_UserB);end; userB.SCHEMA事件的屬性函數(shù)
23、事件的屬性函數(shù)屬性函數(shù)屬性函數(shù)返回類型返回類型對應的系統(tǒng)事件對應的系統(tǒng)事件說明說明ORA_DATABASE_NAMEVARCHAR2(50)所有事件所有事件返回數(shù)據(jù)庫的名稱返回數(shù)據(jù)庫的名稱ORA_DICT_OBJ_NAMEVARCHAR2(30)CREATE, ALTER, DROP返回在其上執(zhí)行返回在其上執(zhí)行DDL操作的數(shù)操作的數(shù)據(jù)字典對象的名稱據(jù)字典對象的名稱ORA_DICT_OBJ_OWNERVARCHAR2(30)CREATE, ALTER, DROP返回在其中執(zhí)行返回在其中執(zhí)行DDL操作的數(shù)操作的數(shù)據(jù)字典對象的所有者據(jù)字典對象的所有者ORA_DICT_OBJ_TYPEVARCHAR2
24、(20)CREATE, ALTER, DROP返回在其上執(zhí)行返回在其上執(zhí)行DDL操作的數(shù)操作的數(shù)據(jù)字典對象的類型據(jù)字典對象的類型ORA_INSTANCE_NUMNUMBER所有事件所有事件返回數(shù)據(jù)庫實例數(shù)返回數(shù)據(jù)庫實例數(shù)ORA_IS_SERVERERRORBOOLEANSERVERERROR以一個錯誤號為參數(shù),如果錯以一個錯誤號為參數(shù),如果錯誤堆棧中有這個錯誤號,該函誤堆棧中有這個錯誤號,該函數(shù)返回數(shù)返回TRUEORA_LOGIN_USERVARCHAR2(30)所有事件所有事件返回已登錄用戶名返回已登錄用戶名ORA_SERVER_ERRORNUMBERSERVERERROR返回錯誤堆棧中給定
25、位置上的返回錯誤堆棧中給定位置上的錯誤編號錯誤編號ORA_SYSEVENTVARCHAR2(20)所有事件所有事件觸發(fā)該觸發(fā)器的系統(tǒng)事件名觸發(fā)該觸發(fā)器的系統(tǒng)事件名create or replace trigger tr_logCreations after create on schemabegin insert into ddl_creations(user_id, object_type, object_name, object_owner, creation_time) values(user, ora_dict_obj_type, ora_dict_obj_name, ora_dict
26、_obj_owner, sysdate); end; 【例【例13-8】創(chuàng)建系統(tǒng)觸發(fā)器,記錄創(chuàng)建模式】創(chuàng)建系統(tǒng)觸發(fā)器,記錄創(chuàng)建模式對象的相關信息。對象的相關信息。系統(tǒng)觸發(fā)器和事務系統(tǒng)觸發(fā)器和事務 n根據(jù)觸發(fā)事件的不同,系統(tǒng)觸發(fā)器事務的行為方根據(jù)觸發(fā)事件的不同,系統(tǒng)觸發(fā)器事務的行為方式也有所不同。系統(tǒng)觸發(fā)器要么以獨立事務(該式也有所不同。系統(tǒng)觸發(fā)器要么以獨立事務(該獨立事務會在觸發(fā)器成功完成后提交)的形式激獨立事務會在觸發(fā)器成功完成后提交)的形式激活,要么就以當前用戶事務的部分事務的形式進活,要么就以當前用戶事務的部分事務的形式進行激活。行激活。nSTARTUPSTARTUP,SHUTDOWNS
27、HUTDOWN,SEVERERRORSEVERERROR和和LOGONLOGON觸發(fā)器觸發(fā)器會以獨立事務的形式激活,而會以獨立事務的形式激活,而LOGOFFLOGOFF和和DDLDDL觸發(fā)器觸發(fā)器則會以當前用戶事務的部分事務的形式進行激活。則會以當前用戶事務的部分事務的形式進行激活。系統(tǒng)觸發(fā)器和事務系統(tǒng)觸發(fā)器和事務 n觸發(fā)器所執(zhí)行的工作一般都會被無條件地提交。觸發(fā)器所執(zhí)行的工作一般都會被無條件地提交。在在DDLDDL觸發(fā)器中,當前事務(也就是觸發(fā)器中,當前事務(也就是CREATECREATE、ALTERALTER或或DROPDROP語句)將自動提交,而這種提交也提語句)將自動提交,而這種提交也
28、提交了觸發(fā)器所完成的工作。交了觸發(fā)器所完成的工作。LOGOFFLOGOFF觸發(fā)器中的工觸發(fā)器中的工作,也會以會話中最后一個事務的部分事務的形作,也會以會話中最后一個事務的部分事務的形式被提交。式被提交。 n注意:注意:無論如何系統(tǒng)觸發(fā)器一般都會被提交,所無論如何系統(tǒng)觸發(fā)器一般都會被提交,所以將它們聲明為自治事務沒有什么意義。以將它們聲明為自治事務沒有什么意義。系統(tǒng)觸發(fā)器和系統(tǒng)觸發(fā)器和WHEN子句子句 n系統(tǒng)觸發(fā)器也可以使用系統(tǒng)觸發(fā)器也可以使用 WHEN WHEN 子句來指定觸發(fā)器子句來指定觸發(fā)器激活的條件。激活的條件。n對每一種系統(tǒng)觸發(fā)器所指定的條件類型有如下限對每一種系統(tǒng)觸發(fā)器所指定的條件類
29、型有如下限制:制:nSTARTUP STARTUP 和和 SHUTDOWN SHUTDOWN 觸發(fā)器不能帶有任何條件。觸發(fā)器不能帶有任何條件。nSERVERERROR SERVERERROR 觸發(fā)器只可以使用觸發(fā)器只可以使用 ERRNO ERRNO 測試來檢查具測試來檢查具體錯誤。體錯誤。nLOGON LOGON 和和 LOGOFF LOGOFF 觸發(fā)器可以使用觸發(fā)器可以使用 USERID USERID 或或 USERNAME USERNAME 測試來檢查用戶標識符或用戶名。測試來檢查用戶標識符或用戶名。nDDL DDL 觸發(fā)器可以檢查正在被修改的對象的名稱和類型,觸發(fā)器可以檢查正在被修改的對
30、象的名稱和類型,也可以檢查用戶的也可以檢查用戶的 ID ID 或名稱。或名稱。 其他觸發(fā)器問題其他觸發(fā)器問題 n觸發(fā)器名稱的命名空間(觸發(fā)器名稱的命名空間(Name-space)n使用觸發(fā)器的各種限制和不同種類的觸發(fā)使用觸發(fā)器的各種限制和不同種類的觸發(fā)器體。器體。n與觸發(fā)器有關的權限問題與觸發(fā)器有關的權限問題 觸發(fā)器名稱觸發(fā)器名稱 n命名空間:是一組合法的可供對象作為名字使用命名空間:是一組合法的可供對象作為名字使用的標識符。過程、包和表都共享同一個命名空間,的標識符。過程、包和表都共享同一個命名空間,在一個數(shù)據(jù)庫模式范圍內,同一命名空間內的所在一個數(shù)據(jù)庫模式范圍內,同一命名空間內的所有的對象
31、必須具有唯一的名稱。有的對象必須具有唯一的名稱。n觸發(fā)器使用的是一個獨立的命名空間。也就是說,觸發(fā)器使用的是一個獨立的命名空間。也就是說,觸發(fā)器可以有與表和過程相同的名稱。然而,在觸發(fā)器可以有與表和過程相同的名稱。然而,在一個模式范圍內,給定的名稱只能用于一個觸發(fā)一個模式范圍內,給定的名稱只能用于一個觸發(fā)器。器。 n提示:提示:雖然觸發(fā)器可以與表同名,但建議一般不雖然觸發(fā)器可以與表同名,但建議一般不要這樣使用。要這樣使用。對觸發(fā)器的限制對觸發(fā)器的限制n注意事項注意事項n觸發(fā)器不會執(zhí)行事務控制語句觸發(fā)器不會執(zhí)行事務控制語句n觸發(fā)器調用的任何函數(shù)或者過程不會執(zhí)行事務觸發(fā)器調用的任何函數(shù)或者過程不會執(zhí)行事務控制語句控制語句n不允許在觸發(fā)器體中聲明不允許在觸發(fā)器體中聲明LONG或者或者LONG RAW變量變量n如果刪除一個表,則在該表上所定義的數(shù)據(jù)庫如果刪除一個表,則在該表上所定義的數(shù)據(jù)庫觸發(fā)器也會被刪除觸發(fā)器也會被刪除觸發(fā)器主體觸發(fā)器主體 n在在Oracle8i之前的版本中,觸發(fā)器主體必須是之前的版本中,觸發(fā)器主體必須是PL/SQL語句塊。語句塊。n在在Oracle8i及更高版本中,觸發(fā)器主體可以包括及更高版本中,觸發(fā)器主體可以包括CALL語句。被調用的過程既可以是語句。被調用的過程既可以是PL/SQL存儲存儲子程序,也可以是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國增強聚丙烯水噴射真空泵市場調查研究報告
- 2025年中國三件套不粘煎鍋市場調查研究報告
- 二零二五年度股東協(xié)議解散及商標轉讓合同
- 二零二五年度車庫產權及運營權轉讓合同
- 2025年度酒店預訂與旅游文化體驗合同
- 二零二五年度電視劇劇本代理推廣合同3篇
- 2025年度銷售合同解除后續(xù)處理補充協(xié)議2篇
- 專為債務問題設計的2024離婚合同范本一
- 2025年度餐飲連鎖機構服務員勞務派遣工作合同3篇
- 二零二五版城市軌道交通車輛采購與租賃服務合同3篇
- 春節(jié)文化常識單選題100道及答案
- 12123交管學法減分考試題及答案
- 2024年杭州師范大學附屬醫(yī)院招聘高層次緊缺專業(yè)人才筆試真題
- 制造業(yè)BCM業(yè)務連續(xù)性管理培訓
- 商場停車場管理制度
- 24年追覓在線測評28題及答案
- TGDNAS 043-2024 成人靜脈中等長度導管置管技術
- 《陸上風電場工程概算定額》NBT 31010-2019
- 皮帶輸送機工程施工電氣安裝措施要點
- 藥房(冰柜)溫濕度表
- QJ903.9A-1995航天產品工藝文件管理制度管理用工藝文件編制規(guī)則
評論
0/150
提交評論