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

Oracle के SEQUENCE.NEXTVAL के बराबर MySQL

http://docs.oracle.com/cd/E17952_01/refman-5.5-en/example-auto-increment.html

3.6.9. AUTO_INCREMENT . का उपयोग करना

AUTO_INCREMENT विशेषता का उपयोग नई पंक्तियों के लिए एक विशिष्ट पहचान बनाने के लिए किया जा सकता है:

<ब्लॉकक्वॉट>
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);

INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');

SELECT * FROM animals;
Which returns:

+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+---------+

AUTO_INCREMENT कॉलम के लिए कोई मान निर्दिष्ट नहीं किया गया था, इसलिए MySQL स्वचालित रूप से अनुक्रम संख्या असाइन करता है। आप अनुक्रम संख्या उत्पन्न करने के लिए कॉलम में स्पष्ट रूप से NULL या 0 निर्दिष्ट कर सकते हैं।

आप LAST_INSERT_ID() SQL फ़ंक्शन या mysql_insert_id() C API फ़ंक्शन के साथ नवीनतम AUTO_INCREMENT मान प्राप्त कर सकते हैं। ये फ़ंक्शन कनेक्शन-विशिष्ट हैं, इसलिए उनके रिटर्न मान किसी अन्य कनेक्शन से प्रभावित नहीं होते हैं जो इन्सर्ट भी कर रहा है।

AUTO_INCREMENT कॉलम के लिए सबसे छोटे पूर्णांक डेटा प्रकार का उपयोग करें जो आपके लिए आवश्यक अधिकतम अनुक्रम मान रखने के लिए पर्याप्त है। जब कॉलम डेटा प्रकार की ऊपरी सीमा तक पहुंच जाता है, तो अनुक्रम संख्या उत्पन्न करने का अगला प्रयास विफल हो जाता है। अधिक से अधिक श्रेणी की अनुमति देने के लिए यदि संभव हो तो UNSIGNED विशेषता का उपयोग करें। उदाहरण के लिए, यदि आप TINYINT का उपयोग करते हैं, तो अधिकतम अनुमेय अनुक्रम संख्या 127 है। TINYINT अहस्ताक्षरित के लिए, अधिकतम 255 है। खंड 11.2.1 देखें, "पूर्णांक प्रकार (सटीक मान) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT ” सभी पूर्णांक प्रकारों की श्रेणियों के लिए।

नोटएक बहु-पंक्ति सम्मिलन के लिए, LAST_INSERT_ID() और mysql_insert_id() वास्तव में सम्मिलित पंक्तियों में से पहली से AUTO_INCREMENT कुंजी लौटाते हैं। यह एक प्रतिकृति सेटअप में अन्य सर्वरों पर बहु-पंक्ति सम्मिलनों को सही ढंग से पुन:प्रस्तुत करने में सक्षम बनाता है।

यदि AUTO_INCREMENT कॉलम कई इंडेक्स का हिस्सा है, तो MySQL इंडेक्स का उपयोग करके अनुक्रम मान उत्पन्न करता है जो AUTO_INCREMENT कॉलम से शुरू होता है, यदि कोई है। उदाहरण के लिए, यदि जानवरों की तालिका में प्राथमिक कुंजी (जीआरपी, आईडी) और इंडेक्स (आईडी) इंडेक्स हैं, तो MySQL अनुक्रम मान उत्पन्न करने के लिए प्राथमिक कुंजी को अनदेखा कर देगा। परिणामस्वरूप, तालिका में एकल अनुक्रम होगा, न कि अनुक्रम प्रति जीआरपी मान।

1 के अलावा किसी AUTO_INCREMENT मान से शुरू करने के लिए, उस मान को CREATE TABLE या ALTER TABLE के साथ इस तरह सेट करें:

mysql> ALTER TABLE tbl AUTO_INCREMENT =100;InnoDB नोट्स

InnoDB तालिकाओं के लिए, सावधान रहें यदि आप INSERT कथनों के अनुक्रम के बीच में ऑटो-इंक्रीमेंट मान वाले कॉलम को संशोधित करते हैं। उदाहरण के लिए, यदि आप ऑटो-इन्क्रीमेंट कॉलम में एक नया, बड़ा मान डालने के लिए एक अद्यतन विवरण का उपयोग करते हैं, तो बाद के INSERT को "डुप्लिकेट प्रविष्टि" त्रुटि का सामना करना पड़ सकता है। यदि आप एक DELETE और उसके बाद अधिक INSERT कथन करते हैं, या जब आप लेन-देन करते हैं, लेकिन UPDATE स्टेटमेंट के बाद नहीं, तो यह परीक्षण होता है कि कोई ऑटो-इन्क्रीमेंट मान पहले से मौजूद है या नहीं।

माईसाम नोट्स

MyISAM तालिकाओं के लिए, आप बहु-स्तंभ अनुक्रमणिका में द्वितीयक स्तंभ पर AUTO_INCREMENT निर्दिष्ट कर सकते हैं। इस मामले में, AUTO_INCREMENT कॉलम के लिए उत्पन्न मान की गणना MAX(auto_increment_column) + 1 WHERE उपसर्ग =दिए गए-उपसर्ग के रूप में की जाती है। यह तब उपयोगी होता है जब आप डेटा को क्रमबद्ध समूहों में रखना चाहते हैं।

<ब्लॉकक्वॉट>
CREATE TABLE animals (
    grp ENUM('fish','mammal','bird') NOT NULL,
    id MEDIUMINT NOT NULL AUTO_INCREMENT,
    name CHAR(30) NOT NULL,
    PRIMARY KEY (grp,id)
) ENGINE=MyISAM;

INSERT INTO animals (grp,name) VALUES
    ('mammal','dog'),('mammal','cat'),
    ('bird','penguin'),('fish','lax'),('mammal','whale'),
    ('bird','ostrich');

SELECT * FROM animals ORDER BY grp,id;
Which returns:

+--------+----+---------+
| grp    | id | name    |
+--------+----+---------+
| fish   |  1 | lax     |
| mammal |  1 | dog     |
| mammal |  2 | cat     |
| mammal |  3 | whale   |
| bird   |  1 | penguin |
| bird   |  2 | ostrich |
+--------+----+---------+

इस मामले में (जब AUTO_INCREMENT कॉलम एक बहु-स्तंभ अनुक्रमणिका का हिस्सा होता है), AUTO_INCREMENT मानों का पुन:उपयोग किया जाता है यदि आप किसी भी समूह में सबसे बड़े AUTO_INCREMENT मान वाली पंक्ति को हटाते हैं। यह MyISAM तालिकाओं के लिए भी होता है, जिसके लिए AUTO_INCREMENT मानों का सामान्य रूप से पुन:उपयोग नहीं किया जाता है।

आगे पढ़ना

AUTO_INCREMENT के बारे में अधिक जानकारी यहां उपलब्ध है:

कॉलम में AUTO_INCREMENT एट्रिब्यूट कैसे असाइन करें:सेक्शन 13.1.17, "टेबल सिंटेक्स बनाएं", और सेक्शन 13.1.7, “टेबल सिंटैक्स बदलें”।

NO_AUTO_VALUE_ON_ZERO SQL मोड के आधार पर AUTO_INCREMENT कैसे व्यवहार करता है:खंड 5.1.7, "सर्वर SQL मोड"।

नवीनतम AUTO_INCREMENT मान वाली पंक्ति को खोजने के लिए LAST_INSERT_ID() फ़ंक्शन का उपयोग कैसे करें:खंड 12.14, "सूचना कार्य"।

उपयोग किए जाने वाले AUTO_INCREMENT मान को सेट करना:खंड 5.1.4, "सर्वर सिस्टम चर"।

AUTO_INCREMENT और प्रतिकृति:खंड 16.4.1.1, "प्रतिकृति और AUTO_INCREMENT"।

AUTO_INCREMENT से संबंधित सर्वर-सिस्टम चर (auto_increment_increment और auto_increment_offset) जिनका उपयोग प्रतिकृति के लिए किया जा सकता है:खंड 5.1.4, "सर्वर सिस्टम चर"।

http://search.oracle.com/search/search?q=auto_increment&group=Documentation&x=0&y=0



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL/SQL डेवलपर का उपयोग करके परीक्षण डेटा जेनरेट करें

  2. EF और TransactionScope SQL सर्वर और Oracle दोनों के लिए DTC में वृद्धि/फैले हुए बिना?

  3. Oracle पाठ NVARCHAR2 के साथ काम नहीं करेगा। और क्या अनुपलब्ध हो सकता है?

  4. ORA-12560:TNS:प्रोटोकॉल एडेप्टर त्रुटि

  5. संक्षेप में हल्का