mysql - primary - make column auto increment sql server




كيفية إعادة تعيين AUTO_INCREMENT في MySQL؟ (12)

كيف يمكنني إعادة ضبط AUTO_INCREMENT للحقل؟ أريد أن يبدأ العد من 1 مرة أخرى.


أفضل حل يعمل لي:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;

بسرعة ، يعمل مع innoDB ، ولست بحاجة إلى معرفة القيمة القصوى الحالية! بهذه الطريقة ستتم إعادة ضبط عداد الزيادة التلقائية وسيبدأ تلقائيًا من القيمة القصوى الموجودة.


أفضل طريقة هي إزالة الحقل مع AI وإضافته مرة أخرى مع AI ، يعمل لجميع الجداول


إضافة تحديث لأن الوظيفة تغيرت في MySQL 5.6. اعتبارًا من MySQL 5.6 ، يمكنك استخدام ALTER TABLE البسيط مع InnoDB:

ALTER TABLE tablename AUTO_INCREMENT = 1;

يتم تحديث المستندات لتعكس هذا:

http://dev.mysql.com/doc/refman/5.6/en/alter-table.html

يوضح الاختبار الخاص بي أيضًا أنه لم يتم نسخ الجدول ، يتم تغيير القيمة ببساطة.


الإجابات الأعلى تقييمًا لهذا السؤال جميعها تنصح "ALTER yourtable AUTO_INCREMENT = value". ومع ذلك ، يعمل هذا فقط عندما تكون value في التعديل أكبر من القيمة القصوى الحالية لعمود autoincrement. وفقا لوثائق MySQL :

لا يمكنك إعادة تعيين العداد إلى قيمة أقل من أو مساوية لأي قيمة تم استخدامها بالفعل. بالنسبة إلى MyISAM ، إذا كانت القيمة أقل من أو تساوي الحد الأقصى للقيمة الحالية في عمود AUTO_INCREMENT ، فسيتم إعادة تعيين القيمة إلى الحد الأقصى الحالي بالإضافة إلى واحد. بالنسبة إلى InnoDB ، يمكنك استخدام ALTER TABLE ... AUTO_INCREMENT = value اعتبارًا من MySQL 5.0.3 ، ولكن إذا كانت القيمة أقل من الحد الأقصى للقيمة الحالية في العمود ، فلن يحدث أي خطأ ولن تتغير قيمة التسلسل الحالية.

في الجوهر ، يمكنك فقط تبديل AUTO_INCREMENT لزيادة قيمة عمود autoincrement ، وليس إعادة تعيينه إلى 1 ، كما يطلب OP في الجزء الثاني من السؤال. بالنسبة للخيارات التي تسمح لك بالفعل بتعيين AUTO_INCREMENT إلى أسفل من الحد الأقصى الحالي الخاص بها ، قم بإلقاء نظرة على المفتاح الأساسي لزيادة الطلب / إعادة تعيينه .


حاولت تغيير الجدول وتعيين auto_increment إلى 1 ولكنه لم يعمل. لقد قررت حذف اسم العمود الذي كنت أقوم بزيادةه ، ثم إنشاء عمود جديد بالاسم المفضل لك وتعيين هذا العمود الجديد لزيادة من البداية.


لتحديث أحدث زائد واحد معرف

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);

هناك طريقة سهلة للغاية مع phpmyadmin تحت علامة التبويب "العمليات" ، يمكنك تعيين ، في خيارات الجدول ، autoincrement إلى الرقم الذي تريده.


هو لجدول فارغ:

ALTER TABLE `table_name` AUTO_INCREMENT = 1;

إذا كان لديك بيانات ولكنك تريد ترتيبها ، فإنني أوصي باستخدام هذا:

ALTER TABLE `table_name` DROP `auto_colmn`;
ALTER TABLE `table_name` ADD  `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`);

يمكنك أيضا استخدام الجدول TRUNCATE بناء الجملة مثل هذا: TRUNCATE TABLE table_name

حذار !! TRUNCATE TABLE your_table سيحذف كل شيء في your_table !!


يمكنك إعادة ضبط العداد من خلال:

ALTER TABLE tablename AUTO_INCREMENT = 1

بالنسبة لـ InnoDB ، لا يمكنك ضبط قيمة auto_increment أقل أو مساوية لأعلى فهرس حالي. (اقتباس من ViralPatel ):

لاحظ أنه لا يمكنك إعادة تعيين العداد إلى قيمة أقل من أو تساوي أي قيمة تم استخدامها بالفعل. بالنسبة إلى MyISAM ، إذا كانت القيمة أقل من أو تساوي الحد الأقصى للقيمة الحالية في عمود AUTO_INCREMENT ، فسيتم إعادة تعيين القيمة إلى الحد الأقصى الحالي بالإضافة إلى واحد. بالنسبة إلى InnoDB ، إذا كانت القيمة أقل من الحد الأقصى للقيمة الحالية في العمود ، فلن يحدث أي خطأ ولن تتغير قيمة التسلسل الحالية.

راجع كيفية إعادة تعيين AutoSynment MySQL باستخدام قيمة MAX من جدول آخر؟ حول كيفية الحصول على قيمة مقبولة ديناميكيًا.


ALTER TABLE news_feed DROP id

ALTER TABLE news_feed ADD  id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

لقد استخدمت هذا في بعض البرامج النصية الخاصة بي ، حيث يتم إسقاط حقل الهوية ثم إضافته مرة أخرى باستخدام الإعدادات السابقة ، ويتم ملء جميع الحقول الموجودة داخل جدول قاعدة البيانات بقيم زيادة تلقائية جديدة ، وهذا يجب أن يعمل أيضًا مع InnoDB.

لاحظ أنه سيتم إعادة سرد جميع الحقول داخل الجدول وستحتوي على معرفات أخرى !!!


ALTER TABLE tablename AUTO_INCREMENT = 1




auto-increment