create table emp( empno number primary key
, name varchar2(30)
, sal number )
Table created.
insert into emp values ( 1000, 'SAM-I-AM', 1500 )
1 row(s) inserted.
insert into emp values ( 1001, 'MR KNOX', 3000 )
1 row(s) inserted.
insert into emp values ( 1002, 'FOX IN SOCKS', 3500 )
1 row(s) inserted.
insert into emp values ( 1003, 'DAISY-HEAD MAYZIE', 4000 )
1 row(s) inserted.
insert into emp values ( 1004, 'THE LORAX', 5000 )
1 row(s) inserted.
select * from emp
EMPNO | NAME | SAL | 1000 | SAM-I-AM | 1500 | 1001 | MR KNOX | 3000 | 1002 | FOX IN SOCKS | 3500 | 1003 | DAISY-HEAD MAYZIE | 4000 | 1004 | THE LORAX | 5000 |
---|
alter table emp add tax number generated always as (case when sal < 3000 then 0 when sal < 4000 then sal * 0.2 else sal * 0.25 end )
Table altered.
select * from emp
EMPNO | NAME | SAL | TAX | 1000 | SAM-I-AM | 1500 | 0 | 1001 | MR KNOX | 3000 | 600 | 1002 | FOX IN SOCKS | 3500 | 700 | 1003 | DAISY-HEAD MAYZIE | 4000 | 1000 | 1004 | THE LORAX | 5000 | 1250 |
---|
alter table emp drop column tax
Table altered.
alter table emp add tax number
Table altered.
create or replace trigger emp_tax_calc
before insert or update on emp
for each row
begin
case
when :new.sal < 3000 then :new.tax := 0;
when :new.sal < 4000 then :new.tax := :new.sal * 0.20;
else :new.tax := :new.sal * 0.25;
end case;
end;
Trigger created.
update emp set sal = sal
5 row(s) updated.
select * from emp
EMPNO | NAME | SAL | TAX | 1000 | SAM-I-AM | 1500 | 0 | 1001 | MR KNOX | 3000 | 600 | 1002 | FOX IN SOCKS | 3500 | 700 | 1003 | DAISY-HEAD MAYZIE | 4000 | 1000 | 1004 | THE LORAX | 5000 | 1250 |
---|