Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक ऑटोनंबर बनाने के लिए Oracle ट्रिगर

कुछ इस तरह 11g पर काम करेगा

CREATE SEQUENCE t1_id_seq 
  start with 10000 
  increment by 1;

CREATE TRIGGER trigger_name
  BEFORE INSERT ON t1
  FOR EACH ROW
DECLARE
BEGIN
  IF( :new.id IS NULL )
  THEN
    :new.id := t1_id_seq.nextval;
  END IF;
END;

यदि आप पुराने संस्करण पर हैं, तो आपको अनुक्रम से अगला मान प्राप्त करने के लिए एक चयन करना होगा

CREATE TRIGGER trigger_name
  BEFORE INSERT ON t1
  FOR EACH ROW
DECLARE
BEGIN
  IF( :new.id IS NULL )
  THEN
    SELECT t1_id_seq.nextval
      INTO :new.id
      FROM dual;
  END IF;
END;

ध्यान रखें कि Oracle सीक्वेंस गैप-फ्री नहीं हैं। तो यह पूरी तरह से संभव है कि विभिन्न कारणों से विशेष मूल्यों को छोड़ दिया जाएगा। आपके पहले इंसर्ट की आईडी 10000 हो सकती है और दूसरी में 10020 की आईडी हो सकती है यदि यह मिनटों, घंटों या दिनों के बाद की जाती है।

इसके अतिरिक्त, ध्यान रखें कि Oracle VALUES क्लॉज में कई पंक्तियों को निर्दिष्ट करने का समर्थन नहीं करता है जैसा कि MySQL करता है। तो इसके बजाय

insert into t1 (firstname, lastname) values ('Michael','Jordan'),('Larry','Bird')

आपको दो अलग INSERT कथनों की आवश्यकता होगी

insert into t1 (firstname, lastname) values ('Michael','Jordan');
insert into t1 (firstname, lastname) values ('Larry','Bird');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL डेवलपर 4.1.3 जारी किया गया

  2. पीडीओ अपवाद ट्रिगर त्रुटियों के लिए नहीं फेंका जा रहा है

  3. क्या एस्केप सीक्वेंस CLOB में संरक्षित हैं?

  4. एसक्यूएल/ओरेकल में संख्याओं की श्रृंखला से श्रेणियां खोजें

  5. ओरेकल में बाइनरी फील्ड (ब्लॉब) पर स्थितियां (जैसे)