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

MySQL में AUTO_INCREMENT कॉलम में NULL, 0, DEFAULT डालकर मान पुनर्लेखन से बचें

MySQL में AUTO_INCREMENT कॉलम में मान डालते समय, NULL, 0, या DEFAULT कीवर्ड का उपयोग करके MySQL को स्वचालित रूप से अगला अनुक्रम मान जनरेट करने दें। यह स्पष्ट मान प्रदान करने की आवश्यकता से बचाता है और कोड सरल रखता है।

सिंटैक्स

INSERT INTO table_name (auto_inc_col, other_col) VALUES (NULL, 'value');
INSERT INTO table_name (auto_inc_col, other_col) VALUES (0, 'value');
INSERT INTO table_name (auto_inc_col, other_col) VALUES (DEFAULT, 'value');

या कॉलम सूची से ऑटो-इंक्रीमेंट कॉलम को **बाहर रखें**:

INSERT INTO table_name (other_col) VALUES ('value');

व्यावहारिक उदाहरण

टेबल बनाएं:

mysql> CREATE TABLE DemoTable1350 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(20)
);

तीनों तरीकों से डालें

mysql> INSERT INTO DemoTable1350 VALUES(NULL, 'Chris');
mysql> INSERT INTO DemoTable1350 VALUES(0, 'Chris');
mysql> INSERT INTO DemoTable1350 VALUES(DEFAULT, 'Chris');

परिणाम देखें:

mysql> SELECT * FROM DemoTable1350;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Chris       |
| 2         | Chris       |
| 3         | Chris       |
+-----------+-------------+

तीनों तरीकों की तुलना

सर्वोत्तम अभ्यास: कॉलम सूची में शामिल न करें

INSERT INTO DemoTable1350 (StudentId, StudentName) VALUES (100, 'Chris');

आंतरिक व्यवहार

  • MySQL आंतरिक काउंटर रखता है (आमतौर पर अधिकतम मान + 1)
  • NULL/0/DEFAULT → काउंटर से अगला मान लें, काउंटर बढ़ाएं
  • स्पष्ट मान > वर्तमान काउंटर → काउंटर उस मान + 1 पर सेट हो जाता है
  • LAST_INSERT_ID() अंतिम जनरेट किया गया मान लौटाता है

सामान्य गलती: 0 डालने पर 0 स्टोर हो जाता है

गलत धारणा: INSERT VALUES(0, 'x') से StudentId = 0 स्टोर होगा।

वास्तविकता: AUTO_INCREMENT कॉलम के लिए, 0 भी "अगला मान जनरेट करें" ट्रिगर करता है (यदि NO_AUTO_VALUE_ON_ZERO SQL मोड सक्षम नहीं है)।

SQL मोड प्रभाव

-- डिफ़ॉल्ट: 0 → अगला अनुक्रम मान
-- NO_AUTO_VALUE_ON_ZERO सक्षम: 0 → शाब्दिक 0 स्टोर होता है
SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO';
INSERT INTO DemoTable1350 VALUES(0, 'Test'); -- StudentId = 0 स्टोर होगा!

सारांश

  • NULL, 0, DEFAULT सभी AUTO_INCREMENT के लिए अगला मान ट्रिगर करते हैं (डिफ़ॉल्ट मोड में)
  • सबसे साफ: कॉलम को INSERT सूची से बाहर रखें
  • DEFAULT सबसे स्पष्ट और पोर्टेबल है
  • SQL मोड NO_AUTO_VALUE_ON_ZERO व्यवहार बदलता है

यह व्यवहार MySQL को लचीला बनाता है लेकिन स्पष्ट कॉलम सूची सर्वोत्तम अभ्यास है।

  1. - Apache के साथ MySQL का उपयोग करना

    आइए समझते हैं कि Apache के साथ MySQL का उपयोग कैसे करें: Apache एक वेब सर्वर सॉफ़्टवेयर है जिसे Apache सॉफ़्टवेयर फाउंडेशन द्वारा विकसित और रखरखाव किया जाता है। यह एक सॉफ़्टवेयर है जो वेब पेज एक्सेस करने के लिए उपयोगकर्ता से अनुरोध लेता है। HTTP अनुरोध पर कुछ सुरक्षा जांच की जाती है और फिर उपयोगक

  1. - MySQL में AUTO_INCREMENT कॉलम के साथ काम करना

    आइए समझते हैं कि MySQL में AUTO_INCREMENT कॉलम के साथ कैसे काम करें: AUTO_INCREMENT विशेषता का उपयोग नई रो के लिए एक अद्वितीय पहचानकर्ता उत्पन्न करने के लिए किया जाता है। आइए देखें कि यह स्टेटमेंट कैसे काम करता है। उससे पहले, नीचे दी गई क्वेरी पर विचार करें: क्वेरी CREATE TABLE tableName ( id

  1. - उदाहरणों के साथ MySQL AUTO_INCREMENT

    आइए समझते हैं कि AUTO_INCREMENT कैसे काम करता है: AUTO_INCREMENT विशेषता का उपयोग नई रो के लिए एक अद्वितीय पहचानकर्ता उत्पन्न करने के लिए किया जाता है। आइए देखें कि यह स्टेटमेंट कैसे काम करता है। उससे पहले, नीचे दी गई क्वेरी पर विचार करें: क्वेरी CREATE TABLE tableName ( id MEDIUMINT NOT NULL

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
मानव्यवहारपठनीयतापोर्टेबिलिटी
NULLअगला अनुक्रम मानअच्छी (स्पष्ट इरादा)मानक SQL
0अगला अनुक्रम मानकम स्पष्टMySQL-विशिष्ट
DEFAULTडिफ़ॉल्ट मान (AUTO_INCREMENT = अगला)बहुत स्पष्टमानक SQL
कॉलम छोड़ेंडिफ़ॉल्ट मानसबसे साफमानक SQL