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