Temporary table on commit preserce and delete : Temporary Table « Table « Oracle PL / SQL






Temporary table on commit preserce and delete

   
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 global temporary table MyTable_session
  2  on commit preserve rows
  3  as
  4  select * from emp where 1=0
  5  /


SQL> insert into MyTable_session select * from emp;

14 rows created.

SQL>
SQL>
SQL> create global temporary table MyTable_transaction
  2  on commit delete rows
  3  as
  4  select * from emp where 1=0
  5  /

Table created.

SQL>
SQL>
SQL> insert into MyTable_transaction select * from emp;

14 rows created.

SQL>
SQL>
SQL> select session_cnt, transaction_cnt
  2    from ( select count(*) session_cnt from MyTable_session ),
  3         ( select count(*) transaction_cnt from MyTable_transaction );

SESSION_CNT TRANSACTION_CNT
----------- ---------------
         14              14

1 row selected.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> select session_cnt, transaction_cnt
  2    from ( select count(*) session_cnt from MyTable_session ),
  3         ( select count(*) transaction_cnt from MyTable_transaction );
SESSION_CNT TRANSACTION_CNT
----------- ---------------
         14               0

1 row selected.

SQL>
SQL> drop table MyTable_session;

SQL>
SQL> drop table MyTable_transaction;

Table dropped.

SQL>
SQL> drop table emp;

Table dropped.

SQL>
SQL> --

   
    
  








Related examples in the same category

1.Create temporary table
2.Create global temporary table from existing table
3.Create global temporary table with 'on commit delete rows' option
4.Temporary tables cannot be forced into logging.
5.Temporary tables support primary keys.
6.Temporary tables do not support foreign keys
7.You cannot alter a temporary table to change its data duration.(drop and recreate)
8.ORA-14452: attempt to create, alter or drop an index on temporary table already in use
9.Update a TEMPORARY TABLE and check the table it based on
10.create global temporary table on commit delete rows
11.drop global temporary table
12.Insert into a temporary with select statement
13.Insert data into the temporary table.
14.truncate a global temporary table
15.Using Temporary Tables
16.Create global temporary table working_emps on commit preserve rows