觸發器儘量考慮內部程式碼過程的封裝(在11g中沒有差別)
點選(此處)摺疊或開啟
-
--觸發器執行的程式碼儘量考慮使用儲存過程進行封裝
-
DROP TABLE t1;
-
DROP TABLE t2;
-
CREATE TABLE t1 AS SELECT ename, empno, deptno FROM scott.emp;
-
CREATE TABLE t2 AS SELECT deptno, count(*) as cnt FROM t1 group by deptno;
-
-
CREATE OR REPLACE TRIGGER tri_t1_insert
-
AFTER INSERT ON t1
-
FOR EACH ROW
-
BEGIN
-
INSERT INTO t2(deptno, cnt) VALUES(:new.deptno, 1);
-
END tri_t1_insert;
-
/
-
-
ALTER SESSION SET TRACEFILE_IDENTIFIER = \'LUISE_OPTIMIZER\';
-
ALTER SESSION SET EVENTS \'10046 trace name context forever, level 8\';
-
INSERT INTO t1(ename, empno, deptno) VALUES(\'luise\', 666, 8);
-
INSERT INTO t1(ename, empno, deptno) VALUES (\'luise\', 777, 8);
-
COMMIT;
-
ALTER SESSION SET EVENTS \'10046 trace name context off\';
-
-
col name for a25
-
col value for a60
- select * from v$diag_info;
[oracle@S1011:/export/home/oracle]$ cd /u01/app/oracle/diag/rdbms/testdb11/TestDB11/trace
[oracle@S1011:/u01/app/oracle/diag/rdbms/testdb11/TestDB11/trace]$ ls *LUISE_OPTIMIZER*.trc
TestDB11_ora_914_LUISE_OPTIMIZER.trc
tkprof TestDB11_ora_914_LUISE_OPTIMIZER.trc 1.txt sys=no sort=prsela,exeela,fchela
--檢視1.txt確定insert into t2...語句被解析的次數
點選(此處)摺疊或開啟
-
--改變觸發器的定義,使用儲存過程封裝具體執行的程式碼
-
CREATE OR REPLACE PROCEDURE proc_tri(p_deptno IN NUMBER)
-
AS
-
BEGIN
-
INSERT INTO t2(deptno, cnt) VALUES(p_deptno, 1);
-
END;
-
/
-
-
CREATE OR REPLACE TRIGGER tri_t1_insert
-
AFTER INSERT ON t1
-
FOR EACH ROW
-
BEGIN
-
proc_tri(:new.deptno);
-
END tri_t1_insert;
- /
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1071345/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [探索] 在開發中儘量提高程式碼的複用性
- mysql 觸發器/過程中的變數!!MySql觸發器變數
- 99%的程式都沒有考慮的網路異常
- 無程式碼平臺之間的區別,和你想象中的無程式碼開發有沒差異?
- 在IT部門和研發部門的工作差別
- 07@在物件內部儘量直接訪問例項變數物件變數
- 網站有沒有安裝SSL證書差別在哪網站
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- 在考慮繼續堅持現有崗位,還是考慮轉崗
- OEM安裝報錯不是內部或外部程式的解決過程
- 將PL/SQL程式碼封裝在靈巧的包中SQL封裝
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- 儲存過程 檢視 觸發器 序列儲存過程觸發器
- oracle的內部啟動過程Oracle
- 程式設計師需要重新考慮無程式碼開發的原因。程式設計師
- 你好BANQ,你覺的execute方法中的迴圈程式碼和組裝respMsg物件的程式碼有沒有必要在這個類中再加兩個方法封裝物件封裝
- oracle 觸發器實現禁止在資料庫中建立dblink ---透過觸發器實現Oracle觸發器資料庫
- 程式碼分層導致Hibernate懶載入失效的問題我認為沒有必要考慮
- Oracle觸發器觸發級別Oracle觸發器
- 通過程式碼控制View的觸控事件被觸發View事件
- SDWebImage內部實現過程Web
- 美國銀行考慮將區塊鏈用作內部賬本區塊鏈
- jQuery 在圖片和文字中插入內容(多種情況考慮)jQuery
- 簡單測試在儲存過程中臨時表與union all的效能差別儲存過程
- 8.7 一個模組的封裝過程封裝
- 智雲通CRM:銷售過程中,沒有關心就沒有關係?
- BigBlueButton安裝過程(在虛擬機器中)虛擬機
- oracle 觸發器 和 常用內建程式包Oracle觸發器
- 用儲存過程封裝awrrpt指令碼(四)儲存過程封裝指令碼
- 用儲存過程封裝awrrpt指令碼(三)儲存過程封裝指令碼
- 用儲存過程封裝awrrpt指令碼(二)儲存過程封裝指令碼
- 用儲存過程封裝awrrpt指令碼(一)儲存過程封裝指令碼
- 用儲存過程封裝awrrpt指令碼(五)儲存過程封裝指令碼
- 檢視錶,儲存過程,觸發器定義的方法儲存過程觸發器
- oracle最佳化sql的內部過程OracleSQL
- 孟老闆 ListAdapter封裝, 告別Adapter程式碼 (中)APT封裝
- 為什麼你的MySQL效能差?函式、儲存過程和觸發器都確認無誤嗎?MySql函式儲存過程觸發器
- 透過觸發器複製包含LONG型別的表觸發器型別