Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में INT फ़ील्ड (प्राइमरी की नहीं) कैसे बनाएं जो 1000 से ऑटो-इन्क्रीमेंट से शुरू हो?

MySQL में AUTO_INCREMENT प्रारंभ मान सेट करना (गैर-प्राइमरी की कॉलम के लिए)

किसी गैर-प्राइमरी की कॉलम पर AUTO_INCREMENT के साथ विशिष्ट मान (जैसे 1000) से शुरू करने के लिए, टेबल निर्माण के बाद ALTER TABLE ... AUTO_INCREMENT = value का उपयोग करें।

आवश्यक शर्तें

  • कॉलम पर INDEX या UNIQUE इंडेक्स होना चाहिए (MySQL आवश्यकता)
  • कॉलम NOT NULL होना चाहिए
  • केवल एक AUTO_INCREMENT कॉलम प्रति टेबल

उदाहरण के साथ पूर्ण कार्यान्वयन

टेबल बनाना (इंडेक्स के साथ गैर-PK ऑटो-इन्क्रीमेंट)

mysql> CREATE TABLE DemoTable639 (
    StudentId INT PRIMARY KEY,
    StudentStartId INT AUTO_INCREMENT,
    StudentName VARCHAR(50),
    INDEX(StudentStartId)
);

ऑटो-इन्क्रीमेंट प्रारंभ मान सेट करना

mysql> ALTER TABLE DemoTable639 AUTO_INCREMENT = 1000;

परिणाम: Query OK, 0 rows affected (0.28 sec) Records: 0 Duplicates: 0 Warnings: 0

रिकॉर्ड डालना (StudentStartId निर्दिष्ट किए बिना)

mysql> INSERT INTO DemoTable639(StudentId, StudentName) VALUES
(1, 'John'), (2, 'Chris'), (3, 'Robert'), (4, 'David');

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable639;

आउटपुट:

+-----------+----------------+-------------+
| StudentId | StudentStartId | StudentName |
+-----------+----------------+-------------+
| 1         | 1000           | John        |
| 2         | 1001           | Chris       |
| 3         | 1002           | Robert      |
| 4         | 1003           | David       |
+-----------+----------------+-------------+
4 rows in set (0.00 sec)

मुख्य बिंदु:

  • StudentId प्राइमरी की है (मैन्युअल मान)
  • StudentStartId AUTO_INCREMENT है 1000 से शुरू
  • INDEX(StudentStartId) AUTO_INCREMENT के लिए आवश्यक
  • INSERT में StudentStartId निर्दिष्ट नहीं किया गया → स्वतः 1000, 1001, 1002, 1003

टेबल निर्माण के समय सेट करना (वैकल्पिक)

CREATE TABLE DemoTable639 (
    StudentId INT PRIMARY KEY,
    StudentStartId INT AUTO_INCREMENT,
    StudentName VARCHAR(50),
    INDEX(StudentStartId)
) AUTO_INCREMENT = 1000;

वर्तमान AUTO_INCREMENT मान जांचना

SHOW TABLE STATUS LIKE 'DemoTable639'\G
-- Auto_increment: 1004 (अगला मान)

AUTO_INCREMENT रीसेट करना

ALTER TABLE DemoTable639 AUTO_INCREMENT = 1000;

ध्यान: मौजूदा अधिकतम मान से कम मान सेट नहीं कर सकते (डेटा हानि रोकने के लिए)।

उपयोग के मामले

  • लिगेसी सिस्टम माइग्रेशन (मौजूदा आईडी रेंज जारी रखना)
  • मल्टी-मास्टर रेप्लिकेशन (अलग आईडी रेंज)
  • परीक्षण डेटा में विशिष्ट रेंज
  • ऑडिट/अनुपालन आवश्यकताएं

⚠️ चेतावनी

गैर-PK AUTO_INCREMENT कॉलम दुर्लभ हैं। आमतौर पर PK ही AUTO_INCREMENT होता है। यदि संभव हो तो PK को ही 1000 से शुरू करें:

CREATE TABLE DemoTable (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(50)
) AUTO_INCREMENT = 1000;
  1. - MySQL CREATE स्टेटमेंट में KEY कीवर्ड का उपयोग

    MySQL में KEY कीवर्ड: INDEX का पर्याय MySQL दस्तावेज़ के अनुसार, KEY आमतौर पर INDEX का पर्याय (synonym) है। कॉलम परिभाषा में PRIMARY KEY को केवल KEY के रूप में भी निर्दिष्ट किया जा सकता है (अन्य डेटाबेस सिस्टम के साथ संगतता के लिए)। उदाहरण: टेबल बनाएं और इंडेक्स जोड़ें CREATE TABLE DemoTable (

  1. - MySQL में इंडेक्स के साथ तालिका कैसे बनाएं?

    MySQL में तालिका निर्माण के बाद CREATE INDEX स्टेटमेंट का उपयोग करके इंडेक्स बनाए जा सकते हैं, या तालिका निर्माण के समय परिभाषित किए जा सकते हैं। विधि 1: तालिका निर्माण के बाद CREATE TABLE table_name ( col1 datatype, col2 datatype ); CREATE INDEX index_name1 ON table_name (col1); CREATE IN

  1. - MySQL में प्राइमरी की कैसे ड्रॉप करें?

    प्राइमरी की ड्रॉप करने के लिए, पहले ALTER का उपयोग करके टेबल को बदलें। इसके साथ, नीचे दिखाए अनुसार की ड्रॉप करने के लिए DROP का उपयोग करें: सिंटैक्स alter table yourTableName drop primary key; आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> StudentId int NOT NULL, -> S