NAME
   Oracle::Trigger - Perl class for creating Oracle triggers

SYNOPSIS
     use Oracle::Trigger;

     my %cfg = ('conn_string'=>'usr/pwd@db', 'table_name'=>'my_ora_tab');
     my $ot = Oracle::Trigger->new;
     # or combine the two together
     my $ot = Oracle::Trigger->new(%cfg);
     my $sql= $ot->prepare(%cfg);
     $ot->execute();    # actually create the audit table and trigger

DESCRIPTION
   This class contains methods to create audit tables and triggers for
   Oracle tables.

 new (conn_string=>'usr/pwd@db',table_name=>'my_table')

   Input variables:

     $cs  - Oracle connection string in usr/pwd@db
     $tn  - Oracle table name without schema

   Variables used or routines called:

     None

   How to use:

      my $obj = new Oracle::Trigger;      # or
      my $obj = Oracle::Trigger->new;     # or
      my $cs  = 'usr/pwd@db';
      my $tn  = 'my_table';
      my $obj = Oracle::Trigger->new(cs=>$cs,tn=>$tn); # or
      my $obj = Oracle::Trigger->new('cs',$cs, 'tn',$tn);

   Return: new empty or initialized Oracle::Trigger object.

   This method constructs a Perl object and capture any parameters if
   specified. It creates and defaults the following variables:

     $self->{conn_string} = "";       # or $self->{cs}
     $self->{table_name}  = "";       # or $self->{tn}

METHODS
   The following are the common methods, routines, and functions defined in
   this class.

 Exported Tag: All

   The *:all* tag includes all the methods or sub-rountines defined in this
   class.

     use Oracle::Trigger qw(:all);

   It includes the following sub-routines: =head3 prepare($cs, $tn, $tp)

   Input variables:

     $cs  - Oracle connection string in usr/pwd@db
     $tn  - Oracle table name without schema
     $tp  - trigger type
            DATA - trigger to audit a table. This is the default.

   Variables used or routines called:

     Debug::EchoMessage
       echoMSG - display message
     {cs} - connection string
     {tn} - table name
     {drop_audit}   - whether to drop audit table if it exists
     {audit_table}  - audit table name, default to aud${$tn}
     {trigger_name} - trigger name, default to trg${$tn}

   How to use:

     my $ar = $self->prepare('usr/pwd@db','my_tab');

   Return: $hr - a hash array ref containing the following keys:

     dbh         - the database handler
     sql_audit   - SQL statement for creating the audit table
     sql_trigger - SQL statement for creating the trigger

   This method performs the following tasks:

     1) create a database handler
     2) check the existance of the table
     3) generate script for creating audit table
     4) generate script for creating trigger

   And it sets the following internal variable as well:

     {dbh} - database handler
     {sql_audit} - sql statements to create audit table
     {sql_trigger} - sql statement to create trigger

  execute($typ)

   Input variables:

     $typ - action type:
            TRIGGER - create trigger only
            AUDIT   - create audit table only
            default - null and will create both

   Variables used or routines called:

     {dbh} - database handler
     {sql_audit} - sql statements to create audit table
     {sql_trigger} - sql statement to create trigger

   How to use:

     my $status = $self->execute();
     $self->execute();

   Return: 0|1: 0 - OK; 1 - failed

   This method submits the sql statement to Oracle server to create audit
   table or trigger or both. The default is to create both. If the audit
   table exists, it will skip creating the audit table. You either need to
   manually drop the table or set {drop_audit} to '1' before you run
   prepare().

HISTORY
   * Version 0.1
       This version is to test the procedures and create DATA trigger.

       04/22/2005 (htu) - finished creating DATA trigger rountines.

   * Version 0.2
       04/29/2005 (htu) - modified some descriptions and moved the common
       routines to Oracle::DML::Common.

   * Version 0.21
       Since get_table_definition is moved to Oracle::Schema, we change it
       here to use Oracle::Schema.

SEE ALSO (some of docs that I check often)
       Data::Describe, Oracle::Loader, CGI::Getopt, File::Xcopy,
       perltoot(1), perlobj(1), perlbot(1), perlsub(1), perldata(1),
       perlsub(1), perlmod(1), perlmodlib(1), perlref(1), perlreftut(1).

AUTHOR
       Copyright (c) 2005 Hanming Tu. All rights reserved.

       This package is free software and is provided "as is" without
       express or implied warranty. It may be used, redistributed and/or
       modified under the terms of the Perl Artistic License (see
       http://www.perl.com/perl/misc/Artistic.html)