Re: TRIGGERS

  • From: Kean Jacinta <jacintakean@xxxxxxxxx>
  • To: oracle-l@xxxxxxxxxxxxx
  • Date: Wed, 18 May 2005 09:33:43 -0700 (PDT)

HI,

here is what i have written in trigger body, i am
really stuck here. help me up , it;s still not working
. System still complain about the unique key error.
**:(


DECLARE
  REFCOUNT            NUMBER;
  DUP_VAL_ON_INDEX    EXCEPTION;
  TEMP                NUMBER;
 
BEGIN
   IF INSERTING THEN
      
   LOOP      
      SELECT COUNT(*) INTO REFCOUNT
      FROM myclass
      WHERE :NEW.id = id;
                  
      IF REFCOUNT > 0 THEN --RECORD EXISTED IN
DATABASE
      SELECT myclass_seq.NEXTVAL INTO TEMP FROM DUAL;
      END IF;
             
      
  END LOOP;    
      
      IF :NEW.ID IS NULL THEN
      
            
      SELECT myclass_SEQ.NEXTVAL 
      INTO :NEW.ID 
      FROM DUAL;
      END IF;
         
   END IF; --MAIN IF

END;


Note : have no idea how to use the exception handler 



JKean



--- david wendelken <davewendelken@xxxxxxxxxxxxx>
wrote:

> If you really want to handle that, you have three
> choices:
> 
> 1) Live with it.   If you have a program that
> assigns the id values for you, it should be getting
> its next value from the sequence also.  If you do
> that, this just isn't a problem in real life.  If
> you aren't willing to ALWAYS get the next id value
> from a sequence, you probably shouldn't be using a
> sequence at all.
> 
> 2) Relatively simple, partial solution.  Use a
> pre-statement trigger on insert, have it grab the
> next sequence value and verify that the record for
> that sequence number is not already in the table. 
> If it is, get the next sequence value until you find
> an empty one.  Assume that all the ones after that
> are ok from then on.  Ignore the fact taht you throw
> away a sequence number each time you do a statement.
>  Remember, I said *partial* solution.
> 
> 3) Read up on mutating table errors and autonomous
> transactions.  This will take you awhile to read and
> experiment with.  We have time to help with specific
> problems, but not to write it for you.
> Ask again after you've read that material and are
> are stuck.
> 
> 
> 
> -----Original Message-----
> From: Kean Jacinta <jacintakean@xxxxxxxxx>
> Sent: May 18, 2005 8:02 AM
> To: david wendelken <davewendelken@xxxxxxxxxxxxx>
> Subject: Re: TRIGGERS
> 
> david,
> 
> :P oh i see . I am so blur. My concern,
> 
> ID   
> ---
> 1  <-- autogenerated
> 2  <-- autogenerated
> 3  <-- autogenerated
> 4  <-- manually created
> 5  <-- manually created 
> 
> My current sequence stay at : 3 , if i issued an
> autotgenerated insert again it will surely prompt
> unique id alrdy existed... or some sort of database
> error. How can then trigger being smart enough to
> silently generate autoid 6 without raising error ?
> 
> I am very close to my objectives alrdy :P
> 
> Thank in advance
> Jkean 
> 



                
__________________________________ 
Yahoo! Mail Mobile 
Take Yahoo! Mail with you! Check email on your mobile phone. 
http://mobile.yahoo.com/learn/mail 
--
//www.freelists.org/webpage/oracle-l

Other related posts: