Trigger Oracle PLSQL

SQL>
SQL>
SQL> set echo one
SP2-0265: echo must be set ON or OFF
SQL> set serveroutput on
SQL>
SQL> CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
  2                    ENAME VARCHAR2(10),
  3                    JOB VARCHAR2(9),
  4                    MGR NUMBER(4),
  5                    HIREDATE DATE,
  6                    SAL NUMBER(7, 2),
  7                    COMM NUMBER(7, 2),
  8                    DEPTNO NUMBER(2));
Table created.
SQL>
SQL> INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK',    7902, TO_DATE('17-DEC-1980', 'DD-MON-YYYY'), 800, NULL, 20);
1 row created.
SQL> INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600, 300, 30);
1 row created.
SQL> INSERT INTO EMP VALUES (7521, 'WARD',  'SALESMAN', 7698, TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250, 500, 30);
1 row created.
SQL> INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER',  7839, TO_DATE('2-APR-1981',  'DD-MON-YYYY'), 2975, NULL, 20);
1 row created.
SQL> INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698,TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);
1 row created.
SQL> INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839,TO_DATE('1-MAY-1981', 'DD-MON-YYYY'), 2850, NULL, 30);
1 row created.
SQL> INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839,TO_DATE('9-JUN-1981', 'DD-MON-YYYY'), 2450, NULL, 10);
1 row created.
SQL> INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566,TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);
1 row created.
SQL> INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL,TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);
1 row created.
SQL> INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698,TO_DATE('8-SEP-1981', 'DD-MON-YYYY'), 1500, 0, 30);
1 row created.
SQL> INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788,TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);
1 row created.
SQL> INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 950, NULL, 30);
1 row created.
SQL> INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 3000, NULL, 20);
1 row created.
SQL> INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782,TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);
1 row created.
SQL>
SQL>
SQL> create table upper_ename( x$ename, x$rid,primary key (x$ename,x$rid))
  2    organization index
  3    as
  4    select upper(ename), rowid from emp;
SQL>
SQL> create or replace trigger upper_ename
  2    after insert or update or delete on emp
  3    for each row
  4    begin
  5        if (updating and (:old.ename||'x' <> :new.ename||'x')) then
  6            delete from upper_ename
  7             where x$ename = upper(:old.ename)
  8               and x$rid = :old.rowid;
  9
 10            insert into upper_ename
 11            (x$ename,x$rid) values
 12            ( upper(:new.ename), :new.rowid );
 13        elsif (inserting) then
 14            insert into upper_ename
 15            (x$ename,x$rid) values
 16            ( upper(:new.ename), :new.rowid );
 17        elsif (deleting) then
 18            delete from upper_ename where x$ename = upper(:old.ename) and x$rid = :old.rowid;
 19        end if;
 20    end;
 21  /
Trigger created.
SQL>
SQL> update emp set ename = initcap(ename);
14 rows updated.
SQL>
SQL> select * from upper_ename;
X$ENAME    X$RID
---------- ------------------
ADAMS      AAAD3HAABAAAIF6AAK
ADAMS      AAAEJwAABAAAIF6AAK
ALLEN      AAAD3HAABAAAIF6AAB
ALLEN      AAAEJwAABAAAIF6AAB
X$ENAME    X$RID
---------- ------------------
BLAKE      AAAD3HAABAAAIF6AAF
BLAKE      AAAEJwAABAAAIF6AAF
CLARK      AAAD3HAABAAAIF6AAG
CLARK      AAAEJwAABAAAIF6AAG
FORD       AAAD3HAABAAAIF6AAM
FORD       AAAEJwAABAAAIF6AAM
JAMES      AAAD3HAABAAAIF6AAL
JAMES      AAAEJwAABAAAIF6AAL
JONES      AAAD3HAABAAAIF6AAD
JONES      AAAEJwAABAAAIF6AAD
KING       AAAD3HAABAAAIF6AAI
KING       AAAEJwAABAAAIF6AAI
MARTIN     AAAD3HAABAAAIF6AAE
MARTIN     AAAEJwAABAAAIF6AAE
MILLER     AAAD3HAABAAAIF6AAN
MILLER     AAAEJwAABAAAIF6AAN
SCOTT      AAAD3HAABAAAIF6AAH
SCOTT      AAAEJwAABAAAIF6AAH
SMITH      AAAD3HAABAAAIF6AAA
SMITH      AAAEJwAABAAAIF6AAA
TURNER     AAAD3HAABAAAIF6AAJ
TURNER     AAAEJwAABAAAIF6AAJ
WARD       AAAD3HAABAAAIF6AAC
WARD       AAAEJwAABAAAIF6AAC
28 rows selected.
SQL> drop table emp;
Table dropped.
SQL>
SQL> --