Sunteți pe pagina 1din 24

desc branch_mstr

Name Null? Type


------------------------------- -------- ----
BRANCH_NO VARCHAR2(10)
NAME NOT NULL VARCHAR2(20)

SQL> drop table branch_mstr purge;

Table dropped.

SQL> ed
Wrote file afiedt.buf

1 CREATE TABLE branch_mstr


2 (Branch_No Varchar2(10) Constraint Branchno_NN NOT NULL,
3 Name Varchar2(20) Constraint Name_NN NOT NULL
4* )
5 /

Table created.

SQL> desc branch_mstr


Name Null? Type
------------------------------- -------- ----
BRANCH_NO NOT NULL VARCHAR2(10)
NAME NOT NULL VARCHAR2(20)

SQL> ed
Wrote file afiedt.buf

1 CREATE TABLE branch_mstr


2 (Branch_No Varchar2(10) Constraint Branchno_NN NOT NULL,
3 Name Varchar2(20) Constraint Name_NN NOT NULL
4* )
5
SQL>
SQL> desc branch_mstr
Name Null? Type
------------------------------- -------- ----
BRANCH_NO NOT NULL VARCHAR2(10)
NAME NOT NULL VARCHAR2(20)

SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> ed
Wrote file afiedt.buf

1 CREATE TABLE branch_mstr


2 (Branch_No Varchar2(10) Constraint Branchno_NN NOT NULL,
3 Name Varchar2(20) Constraint Name_NN NOT NULL
4* )
5
SQL>
SQL>
SQL> select constraint_name,constraint_type
2 from user_constraints
3 where table_name
4
SQL>
SQL> ed
Wrote file afiedt.buf

1 select constraint_name,constraint_type
2 from user_constraints
3* where table_name='branch_mstr'
4 /

no rows selected

SQL> ed
Wrote file afiedt.buf

1 select constraint_name,constraint_type
2 from user_constraints
3* where table_name=upper('branch_mstr')
4 /

CONSTRAINT_NAME C

------------------------------ -

BRANCHNO_NN C

NAME_NN C

SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> ed
Wrote file afiedt.buf

1 select constraint_name,constraint_type
2 from user_constraints
3* where table_name=upper('branch_mstr')
4
SQL>
SQL>
SQL> insert into branch_mstr values(1001,'APET');

1 row created.

SQL> ed
Wrote file afiedt.buf

1* insert into branch_mstr values(1001,'APET')


2
SQL>
SQL> ed
Wrote file afiedt.buf

1* insert into branch_mstr values(1001,'SRNAG')


2 /

1 row created.

SQL> ed
Wrote file afiedt.buf

1* insert into branch_mstr values(1001,null)


2 /
insert into branch_mstr values(1001,null)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("JONES"."BRANCH_MSTR"."NAME")

SQL> ed
Wrote file afiedt.buf

1* insert into branch_mstr(name) values('SRNAG')


2 /
insert into branch_mstr(name) values('SRNAG')
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("JONES"."BRANCH_MSTR"."BRANCH_NO")

SQL> select *from branch_mstr;

BRANCH_NO NAME

---------- --------------------

1001 APET

1001 SRNAG

SQL> drop table branch_mstr purge;

Table dropped.

SQL> ed
Wrote file afiedt.buf

1 CREATE TABLE branch_mstr


2 (Branch_No Varchar2(10) Constraint Branchno_UNQ UNIQUE,
3 Name Varchar2(20) Constraint Name_NN NOT NULL
4* )
SQL>
SQL> /

Table created.

SQL> desc branch_mstr


Name Null? Type
------------------------------- -------- ----
BRANCH_NO VARCHAR2(10)
NAME NOT NULL VARCHAR2(20)

SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> select constraint_name,constraint_type,index_name
2 from user_tables
3
SQL>
SQL>
SQL> ed
Wrote file afiedt.buf

line 3 truncated.
1 select constraint_name,constraint_type,index_name
2 from user_constraints
3* where table_name='BRANCH_MSTR
SQL> /
ERROR:
ORA-01756: quoted string not properly terminated

SQL> ed
Wrote file afiedt.buf

1 select constraint_name,constraint_type,index_name
2 from user_constraints
3* where table_name='BRANCH_MSTR'
SQL> /

CONSTRAINT_NAME C INDEX_NAME

------------------------------ - ------------------------------

NAME_NN C

BRANCHNO_UNQ U BRANCHNO_UNQ

SQL> clear screen


SQL> /
CONSTRAINT_NAME C INDEX_NAME

------------------------------ - ------------------------------

NAME_NN C

BRANCHNO_UNQ U BRANCHNO_UNQ

SQL> clear screen


SQL> select
2
SQL>
SQL>
SQL> ed
Wrote file afiedt.buf

1 select empno,ename,sal,deptno
2 from emp
3 where deptno=10
4* The sta display 10th dept details
5 /
The sta display 10th dept details
*
ERROR at line 4:
ORA-00933: SQL command not properly ended

SQL> ed
Wrote file afiedt.buf

1 select empno,ename,sal,deptno
2 from emp
3 where deptno=10
4* --The sta display 10th dept details
5 /

EMPNO ENAME SAL DEPTNO

--------- ---------- --------- ---------

7782 CLARK 2450 10

7839 KING 5000 10

7934 MILLER 1300 10

SQL> ed
Wrote file afiedt.buf

1 select empno,ename,sal,deptno
2 from emp
3 /*where deptno=10
4* order by sal desc*/
5 /

EMPNO ENAME SAL DEPTNO


--------- ---------- --------- ---------

7369 SMITH 800 20

7499 ALLEN 1600 30

7521 WARD 1250 30

7566 JONES 2975 20

7654 MARTIN 1250 30

7698 BLAKE 2850 30

7782 CLARK 2450 10

7788 SCOTT 3000 20

7839 KING 5000 10

7844 TURNER 1500 30

7876 ADAMS 1100 20

7900 JAMES 950 30

7902 FORD 3000 20

7934 MILLER 1300 10

14 rows selected.

SQL> ed
Wrote file afiedt.buf

1 declare
2 vsal number:=2000;
3 vsal:=3000;
4 begin
5 null;
6* end;
7 /
vsal:=3000;
*
ERROR at line 3:
ORA-06550: line 3, column 5:
PLS-00103: Encountered the symbol "=" when expecting one of the following:
constant exception <an identifier>
<a double-quoted delimited-identifier> table long double ref
char time timestamp interval date binary national character
nchar
The symbol "<an identifier>" was substituted for "=" to continue.

SQL> ed
Wrote file afiedt.buf
1 declare
2 vsal number:=2000;
3 begin
4 vsal:=3000;
5* end;
6 /

PL/SQL procedure successfully completed.

SQL> clear screen


SQL> ed
Wrote file afiedt.buf

1 declare
2 vsal number:=2000;
3 begin
4 vsal:=3000;
5* end;
6 .
SQL> ed
Wrote file afiedt.buf

1 declare
2 vsal number:=2000;
3 begin
4 vsal:=3000;
5* end;
6
7 .
SQL> clear screen
SQL> create table
2
SQL>
SQL> ed
Wrote file afiedt.buf

1 create table oracle


2* (oracle boolean)
SQL> /
(oracle boolean)
*
ERROR at line 2:
ORA-00902: invalid datatype

SQL> ed
Wrote file afiedt.buf

1 create table oracle


2 (oracle varchar2(10)
3* )
4 /

Table created.

SQL> ed
Wrote file afiedt.buf

1 create table oracle


2 (oracle varchar2(10)
3* )
4
SQL>
SQL> clear screen
SQL> select ename from emp;

ENAME

----------

SMITH

ALLEN

WARD

JONES

MARTIN

BLAKE

CLARK

SCOTT

KING

TURNER

ADAMS

JAMES

FORD

MILLER

14 rows selected.

SQL> show user


USER is "JONES"
SQL> clear screen
SQL> create
2
SQL>
SQL> ed
Wrote file afiedt.buf

1 create Table Trace


2 (Userid varchar2(20),
3* dod date)
SQL> /

Table created.

SQL> desc trace


Name Null? Type
------------------------------- -------- ----
USERID VARCHAR2(20)
DOD DATE

SQL> set serveroutput on


SQL> set line 100
SQL> set pagesize 100
SQL> select *from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

--------- ---------- --------- --------- --------- --------- --------- ---------

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7839 KING PRESIDENT 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

14 rows selected.

SQL> create or replace


2 .ed
3
SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_del


2 after delete
3 on emp
4 for each row
5 begin
6 insert into trace values(user,sysdate);
7* end;
8 /
Trigger created.

SQL> delete from emp;

14 rows deleted.

SQL> select *from trace;

USERID DOD

-------------------- ---------

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

JONES 29-DEC-15

14 rows selected.

SQL> rollback;

Rollback complete.

SQL> rollback;

Rollback complete.

SQL> select *from trace;

no rows selected

SQL> select *from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


--------- ---------- --------- --------- --------- --------- --------- ---------

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7839 KING PRESIDENT 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

14 rows selected.

SQL> desc trace


Name Null? Type
------------------------------- -------- ----
USERID VARCHAR2(20)
DOD DATE

SQL> create or replace trigger trg_del


2 after delete
3 on emp
4 for each row
5 begin
6 insert into trace values(user,sysdate);
7 end;
8 .
SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_del


2 after delete
3 on emp
4 begin
5 insert into trace values(user,sysdate);
6* end;
7 /
Trigger created.

SQL> delete from emp;

14 rows deleted.

SQL> select *from trace;

USERID DOD

-------------------- ---------

JONES 29-DEC-15

SQL> rollback;

Rollback complete.

SQL> clear screen


SQL> desc bonus
ERROR:
ORA-04043: object bonus does not exist

SQL> clear screen


SQL> CREATE TABLE BONUS
2 (
3 ENAME VARCHAR2(10),
4 JOB VARCHAR2(9),
5 SAL NUMBER,
6 COMM NUMBER
7 );

Table created.

SQL> clear screen


SQL> select *from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

--------- ---------- --------- --------- --------- --------- --------- ---------

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20


7839 KING PRESIDENT 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

14 rows selected.

SQL> select *from bonus;

no rows selected

SQL> clear screen


SQL> create or replace trigger trg_bonus
2 .
SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_bonus


2 after insert
3 on emp
4 for each row
5 begin
6 insert into bonus values(:new.ename,:new.job,:new.sal,:new.comm);
7 commit;
8* end;
9 /

Trigger created.

SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_bonus


2 after insert
3 on emp
4 for each row
5 begin
6 insert into bonus values(:new.ename,:new.job,:new.sal,:new.comm);
7 commit;
8* end;
9 .
SQL> /

Trigger created.

SQL> insert into emp(empno,ename,job,sal,comm)


values(1001,'JAN','MANAGER',2000,200);
insert into emp(empno,ename,job,sal,comm) values(1001,'JAN','MANAGER',2000,200)
*
ERROR at line 1:
ORA-04092: cannot COMMIT in a trigger
ORA-06512: at "JONES.TRG_BONUS", line 3
ORA-04088: error during execution of trigger 'JONES.TRG_BONUS'

SQL> create or replace trigger trg_bonus


2 after insert
3 on emp
4 for each row
5 begin
6 insert into bonus values(:new.ename,:new.job,:new.sal,:new.comm);
7 commit;
8 end;
9 .
SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_bonus


2 after insert
3 on emp
4 for each row
5 DECLARE
6 pragma autonomous_transaction;
7 begin
8 insert into bonus values(:new.ename,:new.job,:new.sal,:new.comm);
9 commit;
10* end;
SQL> /

Trigger created.

SQL> insert into emp(empno,ename,job,sal,comm)


values(1001,'JAN','MANAGER',2000,200);

1 row created.

SQL> select *from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

--------- ---------- --------- --------- --------- --------- --------- ---------

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7839 KING PRESIDENT 17-NOV-81 5000 10


7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

1001 JAN MANAGER 2000 200

15 rows selected.

SQL> select *from bonus;

ENAME JOB SAL COMM

---------- --------- --------- ---------

JAN MANAGER 2000 200

SQL> rollback;

Rollback complete.

SQL> select *from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

--------- ---------- --------- --------- --------- --------- --------- ---------

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7839 KING PRESIDENT 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20


7934 MILLER CLERK 7782 23-JAN-82 1300 10

14 rows selected.

SQL> select *from bonus;

ENAME JOB SAL COMM

---------- --------- --------- ---------

JAN MANAGER 2000 200

SQL> clear screen


SQL> select *from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

--------- ---------- --------- --------- --------- --------- --------- ---------

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7839 KING PRESIDENT 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

14 rows selected.

SQL> clear screen


SQL> desc delete_log
ERROR:
ORA-04043: object delete_log does not exist
SQL> create table log_table
2
SQL>
SQL>
SQL> ed
Wrote file afiedt.buf

1 create table delete_log


2 as
3 select empno ecode,ename,sal basic,hiredate dod
4 from emp
5* where 1=2
6 /

Table created.

SQL> desc delete_log


Name Null? Type
------------------------------- -------- ----
ECODE NUMBER(4)
ENAME VARCHAR2(10)
BASIC NUMBER(7,2)
DOD DATE

SQL> create or replace trigger


2 .
SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_del


2 after delete
3 on emp
4 for each row
5 when(old.sal>1500)
6 begin
7 insert into delete_log values(:old.empno,:old.ename,:old.sal,sysdate);
8* end trg_del;
9 /

Trigger created.

SQL> delete from emp


2 where deptno=10;

3 rows deleted.

SQL> select *from delete_log;

ECODE ENAME BASIC DOD

--------- ---------- --------- ---------

7782 CLARK 2450 29-DEC-15

7839 KING 5000 29-DEC-15

SQL> rollback;
Rollback complete.

SQL> rollback;

Rollback complete.

SQL> select *from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

--------- ---------- --------- --------- --------- --------- --------- ---------

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7839 KING PRESIDENT 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

14 rows selected.

SQL> select *from dept;

DEPTNO DNAME LOC

--------- -------------- -------------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

SQL> create or
2 .
SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_cnt


2 before delete
3 on dept
4 for each row
5 declare
6 cnt number;
7 begin
8 select count(*) into cnt
9 from emp
10 where deptno=:old.deptno;
11 if cnt>3 then
12 raise_application_error
13 (-20346,:old.deptno||' is having more than 3 emps');
14 end if;
15* end;
16 /

Trigger created.

SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_cnt


2 before delete
3 on dept
4 for each row
5 declare
6 cnt number;
7 begin
8 select count(*) into cnt
9 from emp
10 where deptno=:old.deptno;
11 if cnt>3 then
12 raise_application_error
13 (-20346,:old.deptno||' is having more than 3 emps');
14 end if;
15* end;
SQL> delete from dept
2 where deptno=20;
delete from dept
*
ERROR at line 1:
ORA-20346: 20 is having more than 3 emps
ORA-06512: at "JONES.TRG_CNT", line 8
ORA-04088: error during execution of trigger 'JONES.TRG_CNT'

SQL> rollback;

Rollback complete.

SQL> ed
Wrote file afiedt.buf

line 15 truncated.
1 create or replace trigger trg_cnt
2 before delete
3 on dept
4 for each row
5 declare
6 cnt number;
7 begin
8 select count(*) into cnt
9 from emp
10 where deptno=:old.deptno;
11 if cnt>3 then
12 raise_application_error
13 (-20346,:old.deptno||' is having more than 3 emps');
14 end if;
15* end
SQL>
SQL>
SQL> create or replace
2 .
SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_mgr


2 before insert or update
3 on emp
4 for each row
5 begin
6 if :new.empno=:new.mgr then
7 raise_application_error(-20345,'The same emp can not be manager');
8* end;
9 .
SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_mgr


2 before insert or update
3 on emp
4 for each row
5 begin
6 if :new.empno=:new.mgr then
7 raise_application_error(-20345,'The same emp can not be manager');
8 end if;
9* end;
SQL> /

Trigger created.

SQL> insert into emp(empno,ename,mgr) values(1001,'JAN',1001);


insert into emp(empno,ename,mgr) values(1001,'JAN',1001)
*
ERROR at line 1:
ORA-20345: The same emp can not be manager
ORA-06512: at "JONES.TRG_MGR", line 3
ORA-04088: error during execution of trigger 'JONES.TRG_MGR'

SQL> update emp set mgr=7369


2 where empno=7369;
update emp set mgr=7369
*
ERROR at line 1:
ORA-20345: The same emp can not be manager
ORA-06512: at "JONES.TRG_MGR", line 3
ORA-04088: error during execution of trigger 'JONES.TRG_MGR'

SQL> update emp set empno=7902


2 where
3
SQL>
SQL> ed
Wrote file afiedt.buf

1 update emp set empno=7902


2* where empno=7369
3 /
update emp set empno=7902
*
ERROR at line 1:
ORA-20345: The same emp can not be manager
ORA-06512: at "JONES.TRG_MGR", line 3
ORA-04088: error during execution of trigger 'JONES.TRG_MGR'

SQL> create or replace trigger trg_mgr


2 before insert or update
3 on emp
4 for each row
5 begin
6 if :new.empno=:new.mgr then
7 raise_application_error(-20345,'The same emp can not be manager');
8 end if;
9 end;
10 .
SQL> ed
Wrote file afiedt.buf

1 create or replace trigger trg_mgr


2 before insert or update
3 on emp
4 for each row
5 begin
6 if :new.empno=:new.mgr then
7 raise_application_error(-20345,'The same emp can not be manager');
8 end if;
9* end;
10
11 .
SQL> clear screen
SQL> create table int_tab
2 .
SQL> ed
Wrote file afiedt.buf

1 create table int_tab


2 ( ECODE
NUMBER(4),
3 NAME
VARCHAR2(10),
4 DEPTNO
NUMBER(2)
5* )
6 /

Table created.

SQL> ed
Wrote file afiedt.buf

1 create table upd_tab


2 (ECODE NUMBER(4),
3 NAME VARCHAR2(10),
4* USAL NUMBER(7,2))
5 /

Table created.

SQL> ed
Wrote file afiedt.buf

1 create table del_tab


2 (ECODE
NUMBER(4),
3 NAME
VARCHAR2(10),
4 JOB
VARCHAR2(9)
5* )
6 /

Table created.

SQL> ed
Wrote file afiedt.buf

1 CREATE OR REPLACE TRIGGER trg_iud


2 AFTER insert OR update OR delete
3 ON emp
4 FOR EACH ROW
5 BEGIN
6 IF Inserting THEN
7 INSERT INTO int_tab
8 VALUES(:NEW.empno,:NEW.ename,:NEW.deptno);
9 END IF;
10 IF updating THEN
11 INSERT INTO upd_tab
12 VALUES(:NEW.empno,:NEW.ename,:NEW.sal);
13 END IF;
14 IF deleting THEN
15 INSERT INTO del_tab
16 VALUES(:OLD.empno,:OLD.ename,:OLD.job);
17 END IF;
18* END trg_uid;
SQL> /

Trigger created.
SQL> insert into emp(empno,ename,deptno) values(1001,'JAN',20);
insert into emp(empno,ename,deptno) values(1001,'JAN',20)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("JONES"."EMP"."JOB")

SQL> ed
Wrote file afiedt.buf

1* insert into emp(empno,ename,deptno,job) values(1001,'JAN',20,'CLERK')


SQL> /

1 row created.

SQL> update emp set sal=sal+200


2 where deptno=20;

6 rows updated.

SQL> delete from emp


2 where deptno=30;

6 rows deleted.

SQL> select *from int_tab;

ECODE NAME DEPTNO

--------- ---------- ---------

1001 JAN 20

SQL> select *from upd_tab;

ECODE NAME USAL

--------- ---------- ---------

7369 SMITH 1000

7566 JONES 3175

7788 SCOTT 3200

7876 ADAMS 1300

7902 FORD 3200

1001 JAN 1200

6 rows selected.

SQL> select *from del_tab;

ECODE NAME JOB


--------- ---------- ---------

7499 ALLEN SALESMAN

7521 WARD SALESMAN

7654 MARTIN SALESMAN

7698 BLAKE MANAGER

7844 TURNER SALESMAN

7900 JAMES CLERK

6 rows selected.

SQL> rollback;

Rollback complete.

SQL> conn scott/tiger


Connected.
SQL> select *from job_list;

JOB LOW_PAY HIGH_PAY

-------------------- --------- ---------

Clerk 3000 8000

Salesman 4000 12000

Annalist 8000 25000

Manager 6000 20000

SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> exit

S-ar putea să vă placă și