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

MySQL में सभी डेटा हटाने के बाद प्राथमिक कुंजी को 1 पर रीसेट करना

समाधान: AUTO_INCREMENT रीसेट + TRUNCATE

सभी डेटा हटाने के बाद AUTO_INCREMENT को 1 पर रीसेट करने के लिए ALTER TABLE और TRUNCATE TABLE का उपयोग करें।

सिंटैक्स

ALTER TABLE yourTableName AUTO_INCREMENT = 1;
TRUNCATE TABLE yourTableName;

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

टेबल बनाना और डेटा डालना

mysql> CREATE TABLE resettingPrimaryKeyDemo (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY
    -> );

mysql> INSERT INTO resettingPrimaryKeyDemo VALUES (), (), (), ();
-- 4 पंक्तियाँ, UserId: 1, 2, 3, 4

रीसेट करना

mysql> ALTER TABLE resettingPrimaryKeyDemo AUTO_INCREMENT = 1;
Query OK, 0 rows affected (0.14 sec)

mysql> TRUNCATE TABLE resettingPrimaryKeyDemo;
Query OK, 0 rows affected (0.89 sec)

नया डेटा डालना

mysql> INSERT INTO resettingPrimaryKeyDemo VALUES (), (), ();
mysql> SELECT * FROM resettingPrimaryKeyDemo;
+--------+
| UserId |
+--------+
| 1      |
| 2      |
| 3      |
+--------+

महत्वपूर्ण अंतर

कमांडडेटा हटाता हैAUTO_INCREMENT रीसेटट्रिगर फायररोलबैक संभव
DELETEहाँनहींहाँहाँ (ट्रांजैक्शन में)
TRUNCATEहाँहाँनहींनहीं (DDL)
DROP + CREATEहाँ (टेबल सहित)हाँनहींनहीं

⚠️ चेतावनी: प्राथमिक कुंजी रीसेट करने के खतरे

  • विदेशी कुंजी: संदर्भित टेबल में ऑर्फ़न रिकॉर्ड बनेंगे
  • रिप्लिकेशन: स्लेव पर संघर्ष हो सकता है
  • बैकअप/रिस्टोर: पॉइंट-इन-टाइम रिकवरी जटिल
  • ऑडिट: इतिहास ट्रेल टूट जाता है

सुरक्षित विकल्प

  • गैप स्वीकार करें: AUTO_INCREMENT गैप सामान्य हैं और प्रदर्शन पर कोई प्रभाव नहीं
  • सॉफ्ट डिलीट: deleted_at कॉलम का उपयोग करें
  • नई टेबल: यदि वास्तव में नई शुरुआत चाहिए, तो नई टेबल बनाएं

केवल AUTO_INCREMENT देखना (बिना रीसेट)

SHOW TABLE STATUS LIKE 'yourTableName'\G
-- या
SELECT AUTO_INCREMENT FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'db' AND TABLE_NAME = 'table';
  1. - MySQL में अंडरस्कोर के बाद का स्ट्रिंग भाग प्रदर्शित करने के लिए स्ट्रिंग बदलें

    SUBSTRING() और LIKE के साथ अंडरस्कोर के बाद का भाग निकालना जब स्ट्रिंग में एक डिलीमीटर (जैसे अंडरस्कोर) हो और आपको उसके बाद का भाग चाहिए, तो SUBSTRING() के साथ LOCATE() या स्थितिगत गणना का उपयोग करें। टेबल और डेटा CREATE TABLE DemoTable ( UserName VARCHAR(100) ); Query OK, 0 rows affected (0.6

  1. - MySQL क्वेरी: दो तिथियों की सीमा के बीच सभी डेटा चुनें

    BETWEEN ऑपरेटर का उपयोग करके तिथि सीमा के बीच डेटा चुनना दो तिथियों की सीमा के बीच सभी डेटा चुनने के लिए MySQL BETWEEN का उपयोग करें: select * from yourTableName where yourColumnName between yourDateValue1 and yourDateValue2; पहले टेबल बनाएं: create table DemoTable1422 ( EmployeeId int NOT NULL AUT

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

    MySQL में ऑटो-इन्क्रीमेंट प्राइमरी की को रीसेट (1 से शुरू) करने के लिए, TRUNCATE TABLE का उपयोग करें जो डेटा हटाता है और ऑटो-इन्क्रीमेंट काउंटर रीसेट करता है, या ALTER TABLE से मैन्युअली सेट करें। विधि 1: TRUNCATE TABLE (सबसे सरल, डेटा हटाता है) टेबल बनाएं: mysql> CREATE TABLE DemoTable1929 (