freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

oracle第15章plsql程序設計-資料下載頁

2025-02-14 11:03本頁面
  

【正文】 racle10g 數(shù)據(jù)庫基礎教程 83 ? 創(chuàng)建一個包括員工及其所在部門信息的視圖 empdept,然后向視圖中插入一條記錄( 2345,’TOM’,3000,’SALES’)。 ? CREATE OR REPLACE VIEW empdept ? AS ? SELECT empno,ename,sal,dname ? FROM emp,dept WHERE = ? WITH CHECK OPTION。 ? INSERT INTO empdept ? VALUES(2345, 39。TOM39。,3000, 39。SALES39。)。 ? * ? ERROR 位于第 1 行 : ? ORA01733: 此處不允許虛擬列 Oracle10g 數(shù)據(jù)庫基礎教程 84 ? CREATE OR REPLACE TRIGGER trig_view ? INSTEAD OF INSERT ON empdept ? FOR EACH ROW ? DECLARE ? v_deptno %type。 ? BEGIN ? SELECT deptno INTO v_deptno ? FROM dept WHERE dname=:。 ? INSERT INTO emp(empno,ename,sal,deptno) ? VALUES(:,:,v_deptno,:)。 ? END trig_view。 Oracle10g 數(shù)據(jù)庫基礎教程 85 ?觸發(fā)器事件 ?創(chuàng)建系統(tǒng)觸發(fā)器 Oracle10g 數(shù)據(jù)庫基礎教程 86 ( 1)觸發(fā)事件 ? DDL事件 ? CREATE, ALTER, DROP, RENAME, GRANT, REVOKE, AUDIT, NOAUDIT, COMMENT, TRUNCATE, ANALYZE, ASSOCIATE STATISTICS, DISASSOCIATE STATISTICS等。 ? 觸發(fā)時間可以是 BEFORE,也可以是 AFTER。 ? 數(shù)據(jù)庫事件 ? STARTUP, SHUTDOWN, SERVERERROR, LOGON, LOGOFF等。 ? 觸發(fā)時間由具體事件決定, Oracle10g 數(shù)據(jù)庫基礎教程 87 事件 允許計時 描述 STARTUP AFTER 當實例開始時激發(fā) SHUTDOWN BEFORE 當實例關閉時激發(fā) SERVERERROR AFTER 只要錯誤發(fā)生就激發(fā) LOGON AFTER 在一個用戶成功連接數(shù)據(jù)庫時觸發(fā) LOGOFF BEFORE 在用戶注銷時開始激發(fā) ? 數(shù)據(jù)庫事件的觸發(fā)時間 Oracle10g 數(shù)據(jù)庫基礎教程 88 ? 語法 ? CREATE [OR REPLACE] TRIGGER trigger_name ? BEFORE|AFTER ddl_event_list|database_event_list ? ON DATABASE|SCHEMA ? [WHEN trigger_condition] ? DECLARE ? /*Declarative section is here */ ? BEGIN ? /*Executable section is here*/ ? EXCEPTION ? /*Exception section is here*/ ? END [trigger_name]。 ( 2)創(chuàng)建系統(tǒng)觸發(fā)器 Oracle10g 數(shù)據(jù)庫基礎教程 89 ? 說明 ? 基于數(shù)據(jù)庫( DATABASE)的觸發(fā)器,只要系統(tǒng)中該觸發(fā)事件發(fā)生,且滿足觸發(fā)條件,則觸發(fā)器執(zhí)行; ? 對于基于模式( SCHEMAN)的觸發(fā)器,只有當特定模式中的觸發(fā)事件發(fā)生時,觸發(fā)器才執(zhí)行。 ? 注意 ? STARTUP和 SHUTDOWN事件只能激發(fā)基于數(shù)據(jù)庫的觸發(fā)器。 Oracle10g 數(shù)據(jù)庫基礎教程 90 ? 將每個用戶的登錄信息寫入 temp_table表中。 ? CREATE OR REPLACE TRIGGER log_user_connection ? AFTER LOGON ON DATABASE ? BEGIN ? INSERT INTO ? VALUES (user,sysdate)。 ? END log_user_connection。 Oracle10g 數(shù)據(jù)庫基礎教程 91 ? 在系統(tǒng)觸發(fā)器內部可以使用一些事件屬性函數(shù)以獲得觸發(fā)事件的信息。 ? 由于系統(tǒng)沒有為這些事件屬性函數(shù)指定同義詞,因此在調用時必須在其前加上 “ SYS.”前綴。 ?示例 ?當數(shù)據(jù)庫中執(zhí)行 CREATE操作時,將創(chuàng)建的對象信息記錄到 ddl_creations表中。 Oracle10g 數(shù)據(jù)庫基礎教程 92 ? CREATE TABLE ddl_creations ( ? user_id VARCHAR2(30), ? object_type VARCHAR2(20), ? object_name VARCHAR2(30), ? object_owner VARCHAR2(30), ? creation_date DATE)。 ? CREATE OR REPLACE TRIGGER log_creations ? AFTER CREATE ON DATABASE ? BEGIN ? INSERT INTO ddl_creations ? VALUES(ora_login_user, ora_dict_obj_type, ? ora_dict_obj_name, ora_dict_obj_owner, sysdate)。 ? END log_creations。 Oracle10g 數(shù)據(jù)庫基礎教程 93 變異表觸發(fā)器 ? 概念 ? 變異表是指激發(fā)觸發(fā)器的 DML語句所操作的表,即觸發(fā)器為之定義的表,或者由于 DELETE CASCADE操作而需要修改的表,即當前表的子表。 ? 約束表是指由于引用完整性約束而需要從中讀取或修改數(shù)據(jù)的表,即當前表的父表。 Oracle10g 數(shù)據(jù)庫基礎教程 94 ? 當對一個表創(chuàng)建行級觸發(fā)器,或創(chuàng)建由 DELETE CASCADE操作而激發(fā)的語句級觸發(fā)器時,有下列兩條限制: ? 不能讀取或修改任何觸發(fā)語句的變異表; ? 不能讀取或修改觸發(fā)表的一個約束表的 PRIMARY KEY, UNIQUE 或 FOREIGN KEY關鍵字的列 , 但 可以修改其他列。 ? 注意 ? 如果 INSERT… VALUES語句只影響一行,那么該語句的行級前觸發(fā)器不會把觸發(fā)表當做變異表對待。 ? INSERT INTO table SELECT… 等語句總是把觸發(fā)表當做變異表,即使子查詢僅僅返回一條記錄。 Oracle10g 數(shù)據(jù)庫基礎教程 95 ?如果既想更新變異表,同時又需要查詢變異表,那么如何處理呢 ? ?將行級觸發(fā)器與語句級觸發(fā)器結合起來,在行級觸發(fā)器中獲取要修改的記錄的信息,存放到一個軟件包的全局變量中,然后在語句級后觸發(fā)器中利用軟件包中全局變量信息對變異表的查詢,并根據(jù)查詢的結果進行業(yè)務處理。 Oracle10g 數(shù)據(jù)庫基礎教程 96 ?為了實現(xiàn)在更新員工所在部門或向部門插入新員工時,部門中員工人數(shù)不超過 8人,可以在 emp表上創(chuàng)建兩個觸發(fā)器,同時創(chuàng)建一個共享信息的包。 Oracle10g 數(shù)據(jù)庫基礎教程 97 ? CREATE OR REPLACE PACKAGE mutate_pkg ? AS ? v_deptno NUMBER(2)。 ? END。 ? CREATE OR REPLACE TRIGGER rmutate_trigger ? BEFORE INSERT OR UPDATE OF deptno ON EMP ? FOR EACH ROW ? BEGIN ? :=:。 ? END。 Oracle10g 數(shù)據(jù)庫基礎教程 98 ? CREATE OR REPLACE TRIGGER smutate_trigger ? AFTER INSERT OR UPDATE OF deptno ON EMP ? DECLARE ? v_num number(3)。 ? BEGIN ? SELECT count(*) INTO v_num FROM emp ? WHERE deptno=。 ? IF v_num8 THEN ? RAISE_APPLICATION_ERROR(20233, ? 39。TOO MANY EMPLOYEES IN DEPARTMENT 39。|| ? )。 ? END IF。 ? END。 Oracle10g 數(shù)據(jù)庫基礎教程 99 ? INSERT INTO emp(empno,ename,sal,deptno) VALUES(2,39。WANG39。,2023,10)。 ? UPDATE emp SET deptno=10 WHERE empno=7844。 ? UPDATE emp SET deptno=10 WHERE empno=7369。 ? UPDATE emp SET deptno=10 WHERE empno=7369 ? * ? 第 1 行出現(xiàn)錯誤 : ? ORA20233: TOO MANY EMPLOYEES IN DEPARTMENT 10 ? ORA06512: 在 , line 6 ? ORA04088: 觸發(fā)器 39。39。 執(zhí)行過程中出錯 Oracle10g 數(shù)據(jù)庫基礎教程 100 ? 觸發(fā)器名稱 ? 觸發(fā)器存在于單獨的名字空間中,在一個模式中可以與其他對象同名 ? 觸發(fā)器的限制 ? 不能出現(xiàn)任何事務控制語句。因為觸發(fā)器作為觸發(fā)語句執(zhí)行的一部分,處于同一個事務中。 ? 觸發(fā)器體所調用的過程或函數(shù)都不能發(fā)出任何事務控制語句(自治事務子程序除外)。 ? 觸發(fā)器體中不能聲明 LONG 或 LONG RAW變量,而且 :new和 :old不能引用 LONG或 LONG RAW類型的列。 ? 觸發(fā)器體中可以引用 LOB和 OBJECT列,但不能修改該列的值。 ? 觸發(fā)器的大小不能超過 32K。 Oracle10g 數(shù)據(jù)庫基礎教程 101 ? 激活或禁用觸發(fā)器 ? 可以激活或禁用某個觸發(fā)器。語法為 ? ALTER TRIGGER triggername ENABLE|DISABLE。 ? 激活或禁用某個表對象上的所有觸發(fā)器。語法為 ? ALTER TABLE table_name ENABLE|DISABLE ALL TRIGGERS。 ? 修改觸發(fā)器 ? CREATE OR REPLACE TRIGGER trigger_name ? 重新編譯觸發(fā)器 ? ALTER TRIGGER trigger_name COMPILE。 Oracle10g 數(shù)據(jù)庫基礎教程 102 ? 查看觸發(fā)器及其源代碼 ? 查詢數(shù)據(jù)字典視圖 USER_TRIGGERS ? SELECT trigger_name,trigger_type, ? table_name,trigger_body FROM user_triggers。 ? 刪除觸發(fā)器 ? 當觸發(fā)器不再需要時,可以使用 DROP TRIGGER語句刪除觸發(fā)器。 ? DROP TRIGGER trigger_name。 Oracle10g 數(shù)據(jù)庫基礎教程 總結 ?存儲過程 ?函數(shù) ?局部子程序 ?包 ?觸發(fā)器 103 Oracle10g 數(shù)據(jù)庫基礎教程 演講完畢,謝謝觀看!
點擊復制文檔內容
電大資料相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1