Title: RE: Do triggers cause a context switch between SQL & PL/SQL

Yes ...

Raj
--------------------------------------------------------------------------------
Rajendra dot Jamadagni at nospamespn dot com
All Views expressed in this email are strictly personal.
QOTD: Any clod can have facts, having an opinion is an art !


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, April 01, 2003 12:49 PM
To: Multiple recipients of list ORACLE-L
Subject: Do triggers cause a context switch between SQL & PL/SQL


Question:

If some idiot decides to circumvent Oracle's referential integrity and
re-implement it by using triggers (insert, update, delete) that checks the
foreign (parent/child) key fields in other tables like this,

declare numrows INTEGER;
begin
    -- ApplicationForm is used if the state and other criteria match that
in
    -- ApplicationFormCriteria ON PARENT DELETE RESTRICT
    select count(*) into numrows
      from ApplicationFormCriteria
      where
        ApplicationFormCriteria.applicationFormId = :old.applicationFormId;
    if (numrows > 0)
    then
      raise_application_error(
        -20343,
        'Database Integrity Violation - Cannot DELETE row in Table
''ApplicationForm'' because referencing row exists in table
''ApplicationFormCriteria'' for Primary Key (applicationFormId)=' ||
        :old.applicationFormId
      );
    end if;


end;

would it cause context switching between the SQL & PL/SQL engines?

Yes, some genius did this in one of our databases.  Two hundred
third/fourth normal form tables enforced by 800 triggers...  I have him
registered to be stoned in public.


--
Please see the official ORACLE-L FAQ: http://www.orafaq.net
--
Author:
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

*********************************************************************This e-mail 
message is confidential, intended only for the named recipient(s) above and may 
contain information that is privileged, attorney work product or exempt from 
disclosure under applicable law. If you have received this message in error, or are 
not the named recipient(s), please immediately notify corporate MIS at (860) 766-2000 
and delete this e-mail message from your computer, Thank 
you.*********************************************************************1

Reply via email to