Re: Debug DDL trigger

  • From: Mladen Gogala <mgogala@xxxxxxxxxxxxxxxxxxxx>
  • To: breitliw@xxxxxxxxxxxxx
  • Date: Tue, 23 Aug 2005 10:20:28 -0400

Wolfgang Breitling wrote:

I could be wrong, but I am pretty sure you are not allowed to issue commits - or rollbacks - in a trigger. That rules out not only the commits of your inserts, but especially your "execute immediate 'create table ...'" as all DDL imply a commit.

Wolfgang, you're never wrong. If it appears that you are wrong, it must be the work of Satan. In this case, however,
I can strenghten tour belief with an excerpt from 9i Application developers guide:



Restrictions on Creating Triggers

Coding triggers requires some restrictions that are not required for standard PL/SQL blocks. The following sections discuss these restrictions.


Maximum Trigger Size

The size of a trigger cannot be more than 32K.


SQL Statements Allowed in Trigger Bodies

The body of a trigger can contain DML SQL statements. It can also contain |SELECT| statements, but they must be |SELECT|... |INTO|... statements or the |SELECT| statement in the definition of a cursor.

DDL statements are not allowed in the body of a trigger. Also, no transaction control statements are allowed in a trigger. |ROLLBACK|, |COMMIT|, and |SAVEPOINT| cannot be used.For system triggers, {|CREATE|/|ALTER|/|DROP|} |TABLE| statements and |ALTER|...|COMPILE| are allowed.

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



--
Mladen Gogala
Oracle DBA
Ext. 121

Other related posts: