Home » SQL & PL/SQL » SQL & PL/SQL » Urgent help needed on SChema Level Triggers
Urgent help needed on SChema Level Triggers [message #39030] Fri, 07 June 2002 12:50 Go to next message
Gurusubramanyam
Messages: 79
Registered: July 2001
Member
Using the schema level triggers or using some other methods how to find out the data insertion , updation and deletion dates & times of specified tables tables
ie last inserted/modified/deleted date.very urgent. suggest a good solution for that..

thanks,
Prasad
Re: Urgent help needed on SChema Level Triggers [message #39032 is a reply to message #39030] Fri, 07 June 2002 14:16 Go to previous message
Mahesh Rajendran
Messages: 10707
Registered: March 2002
Location: oracleDocoVille
Senior Member
Account Moderator
hello!

schema level trigger are used to monitor the DDL's only. like create/alter/drop a table or index
here is an example
SQL> create table event_table( 
  2  object_name varchar2(30), 
  3  object_type varchar2(20), 
  4  date_created date ); 

Table created.
SQL> create or replace trigger after_create_trg
  2  after create
  3  on mag.schema
  4  begin
  5  /* This trigger tracks the creation of table or index */
  6  if sys.dictionary_obj_type='TABLE' OR
  7  sys.dictionary_obj_type='INDEX'
  8  then
  9  insert into event_table values
 10  (sys.dictionary_obj_name, sys.dictionary_obj_type, sysdate);
 11  end if;
 12  end;
 13  /

Trigger created.

SQL> create table test_creation
  2  (id number);

Table created.

SQL> select * from event_table;

OBJECT_NAME                    OBJECT_TYPE          DATE_CREA
------------------------------ -------------------- ---------
TEST_CREATION                  TABLE                08-JUN-02



in order to track the data insertion, updation, deletion etc, you need to use the regular triggers.
here, for inserts only new values are inserted. for deletes only old values are inserted. for updates both old and new values are inserted

SQL> ed
Wrote file afiedt.buf

  1  create table dept_back
  2  (oldDEPTNO                                                 NUMBER(2),
  3   oldDNAME                                                          VARCHAR2(14),
  4   oldLOC                                                            VARCHAR2(13),
  5  newDEPTNO                                                 NUMBER(2),
  6   newDNAME                                                          VARCHAR2(14),
  7*  newLOC                                                            VARCHAR2(13))
  8  /

Table created.
SQL> ed
Wrote file afiedt.buf

  1* alter table dept_back add (stamp date)
SQL> /

Table altered.

SQL> ed
Wrote file afiedt.buf

  1   create or replace trigger audit_dept
  2   after insert or update or delete on dept
  3   for each row
  4   begin
  5   if inserting then
  6      insert into dept_back values
  7      (null,null,null,:new.deptno,:new.dname,:new.loc,sysdate);
  8   end if;
  9   if deleting then
 10      insert into dept_back values
 11      (:old.deptno,:old.dname,:old.loc,null,null,null,sysdate);
 12   end if;
 13   if updating then
 14      insert into dept_back values
 15      (:old.deptno,:old.dname,:old.loc,:new.deptno,:new.dname,:new.loc,sysdate);
 16   end if;
 17*  end;
SQL> /

Trigger created.

SQL> insert into dept values (50,'MIS','salem');

1 row created.

SQL> update dept set deptno=60 where loc='salem';

1 row updated.

SQL> delete from dept where deptno=60;

1 row deleted.

SQL> select * from dept_back;

 OLDDEPTNO OLDDNAME       OLDLOC         NEWDEPTNO NEWDNAME       NEWLOC        STAMP
---------- -------------- ------------- ---------- -------------- ------------- ---------
                                                50 MIS            salem         08-JUN-02
        50 MIS            salem                 60 MIS            salem         08-JUN-02
        60 MIS            salem                                                 08-JUN-02

6 rows selected.

SQL> 
Previous Topic: where can I find all built-in functions and its usage?
Next Topic: Re: What is wrong with my logic?
Goto Forum:
  


Current Time: Fri Apr 19 18:38:16 CDT 2024