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

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

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

विधि 1: TRUNCATE TABLE (सबसे सरल, डेटा हटाता है)

टेबल बनाएं:

mysql> CREATE TABLE DemoTable1929 (
    UserId INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (UserId)
);

डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1929 VALUES (), (), ();

डेटा (ID 1, 2, 3):

+--------+
| UserId |
+--------+
| 1      |
| 2      |
| 3      |
+--------+

TRUNCATE से रीसेट करें:

mysql> TRUNCATE TABLE DemoTable1929;

नया डेटा इन्सर्ट करें (ID 1 से शुरू):

mysql> INSERT INTO DemoTable1929 VALUES (), ();

परिणाम:

+--------+
| UserId |
+--------+
| 1      |
| 2      |
+--------+

विधि 2: ALTER TABLE (डेटा रखते हुए काउंटर सेट करें)

-- अगला ऑटो-इन्क्रीमेंट मान सेट करें
ALTER TABLE DemoTable1929 AUTO_INCREMENT = 1;

नोट: यदि टेबल में डेटा है, तो अगला मान MAX(id) + 1 या निर्दिष्ट मान में से जो बड़ा हो, होगा।

विधि 3: डेटा रखते हुए रीसेट (पुन: क्रमांकन)

मौजूदा डेटा को 1, 2, 3... से पुन: क्रमांकित करने के लिए:

-- 1. नई टेबल बनाएं
CREATE TABLE new_table LIKE DemoTable1929;

-- 2. डेटा कॉपी करें (ID के बिना)
INSERT INTO new_table (col1, col2, ...)
SELECT col1, col2, ... FROM DemoTable1929 ORDER BY UserId;

-- 3. टेबल स्वैप करें
RENAME TABLE DemoTable1929 TO old_table, new_table TO DemoTable1929;

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

विधिडेटाऑटो-इन्क्रीमेंटविदेशी कुंजी
TRUNCATEहट जाता हैरीसेट (1)ब्लॉक कर सकता है (FK निर्भर)
ALTER TABLEरखा जाता हैसेट होता है (अगला मान)कोई प्रभाव नहीं
पुन: क्रमांकनरखा जाता है (नए ID)रीसेटFK अपडेट आवश्यक

सावधानियां

  • विदेशी कुंजी: रेफरेंस करने वाली टेबल्स मौजूद होने पर TRUNCATE/पुन: क्रमांकन ब्लॉक हो सकता है
  • ट्रांजैक्शन: TRUNCATE ट्रांजैक्शनल नहीं है (रोलबैक नहीं)
  • ट्रिगर: TRUNCATE DELETE ट्रिगर फायर नहीं करता
  • प्रतिकृति: रिप्लिकेशन में व्यवहार भिन्न हो सकता है

बेस्ट प्रैक्टिस

  • टेस्ट/डेव वातावरण: TRUNCATE ठीक है
  • उत्पादन: डेटा रखते हुए ALTER TABLE या योजनाबद्ध माइग्रेशन
  • प्राइमरी की मान आमतौर पर अपरिवर्तनीय होने चाहिए (रीसेट/पुन: क्रमांकन से बचें)
  1. - MySQL में प्राइमरी की कैसे ड्रॉप करें?

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

  1. - MySQL में information_schema से कॉलम प्राइमरी की है या नहीं जांचें

    information_schema.COLUMNS टेबल से COLUMN_KEY = PRI जांचकर किसी टेबल के सभी कॉलम की प्राइमरी की स्थिति देख सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1886 ( Id INT NOT NULL, FirstName VARCHAR(20), LastName VARCHAR(20), Age INT, DateOfBirth DATETIME, Education VARCH

  1. - MySQL में प्राइमरी की को कई टेबल में फॉरेन की के रूप में कैसे रेफ़र करें?

    ALTER TABLE ... ADD CONSTRAINT alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecondTableNamePrimaryKey`) references yourFirstTableName(yourFirstTablePrimaryKeyColumnName); उदाहरण alter table demo66 add constraint `id_fk` foreign key(`user_id`) references