-
--触发器执行的代码尽量考虑使用存储过程进行封装
-
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博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1071345/
,如需转载,请注明出处,否则将追究法律责任。