कुछ इस तरह 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');