create table Emp (empno number, mngno number);
create table Mgr (mngno number, emp_count number);
insert into Mgr (mngno, emp_count) values (1, 0);
insert into Mgr (mngno, emp_count) values (2, 0);
commit;
create type ty_Emp as object (empno number, mngno number);
/
create type tb_Emp as table of ty_Emp;
/
create trigger tr_Set_Emp_Cnt
for insert on Emp compound trigger
v_tb_Emp tb_Emp := tb_Emp();
l_Cnt pls_integer;
---- Row part of the compound trigger
before each row is
begin
v_tb_Emp.extend(1);
v_tb_Emp(v_tb_Emp.last) := ty_Emp(:new.EmpNo, :new.MngNo);
end before each row;
-- Statement part of the compound trigger
after statement is
begin
update Mgr m
set m.Emp_Count = m.Emp_Count + (select count(*)
from table(v_tb_Emp) e
where e.MngNo = m.MngNo)
where m.MngNo in (select distinct e.MngNo
from table(v_tb_Emp) e);
end after statement;
end tr_Set_Emp_Cnt;
/
insert into emp (empno, mngno)
(select 1,1 from dual union all
select 2,1 from dual
);
insert into emp (empno, mngno)
(select 3,2 from dual union all
select 4,2 from dual
);
insert into emp (empno, mngno)
(select 5,1 from dual union all
select 6,1 from dual
);
select * from mgr;
MNGNO EMP_COUNT
----- ----------
1 4
2 2
I use this blog as a dumping ground for various scripts as well as solutions to Maths problems.
Labels
- Alter (2)
- Analytic functions (2)
- AQ (2)
- AWR (4)
- Collections (2)
- Connect By (2)
- Constraints (7)
- Date/Time calculations (3)
- Dynamic SQL (4)
- Explain Plan (1)
- Formatting (3)
- Functions (1)
- Generating Functions (1)
- Indexes (7)
- Insert (3)
- JMS (3)
- Joins (4)
- LOB (3)
- locking (5)
- Partitions (3)
- Performance (10)
- Security (1)
- SQL Plus (3)
- Tabibitosan (1)
- Triggers (1)
- Views (1)
- XML (4)
Script categories
- Performance (10)
- Constraints (7)
- Indexes (7)
- locking (5)
- AWR (4)
- Dynamic SQL (4)
- Joins (4)
- XML (4)
- Date/Time calculations (3)
- Formatting (3)
- Insert (3)
- JMS (3)
- LOB (3)
- Partitions (3)
- SQL Plus (3)
- AQ (2)
- Analytic functions (2)
- Collections (2)
- Connect By (2)
- Explain Plan (1)
- Functions (1)
- Security (1)
- Triggers (1)
- Views (1)
Thursday, 22 September 2011
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment