كيفية تغيير المعرف في جداول MySQL الحالية مع البيانات إلى التلقائي من آخر معرف؟

StackOverflow https://stackoverflow.com/questions/4027954

سؤال

لقد تمكنت للتو من ترحيل قاعدة بيانات كبيرة جدًا من SQL Server إلى MySQL. لم أقم بتعيين المفاتيح الأساسية لزيادة السيارات أثناء الترحيل لأن الجداول لها علاقات تستند إلى معرفات كمفاتيح أساسية هي مفاتيح أجنبية في جدول آخر.

الآن لإضافة سجلات جديدة ، أريد تغيير أعمدة المفتاح الأساسي "معرف" في جميع الجداول لتكون تلقائيًا ولكن بدءًا من آخر رقم في عمود المعرف في كل جدول.

ما هي أفضل طريقة للقيام بذلك دون فقدان العلاقات التي أمتلكها بالفعل؟

تحديث: محاولة إضافة تلقائي يعطيني هذا الخطأ:

ERROR 1067: Invalid default value for 'id'

SQL Statement:

ALTER TABLE `skandium`.`brands` CHANGE COLUMN `id` `id` INT(11) NOT NULL DEFAULT '0' AUTO_INCREMENT

ERROR 1050: Table 'brands' already exists

SQL Statement:

CREATE TABLE `brands` (
  `id` int(11) NOT NULL DEFAULT '0',
  `brand` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
هل كانت مفيدة؟

المحلول

فقط أضف التركيب التلقائي على الأعمدة المطلوبة. لن يؤثر على الصفوف الموجودة. سيبدأ بالقيمة المتاحة التالية.

لاحظ أن العمود الذي يجري التغذية التلقائية يعني أنه إذا لم تقم بتعيين قيمة له ، فسيتم إضافة واحد بواسطة MySQL. إذا كنت ترغب في توفير قيم صريحة ، فيمكنك القيام بذلك دون حدوث أي شيء خاص. لذلك كان بإمكانك تعيين هذه الأعمدة على التغذية التلقائية مباشرة من البداية.

لا يمكن أن يكون للعمود الذي يحتوي على مكونات تلقائية قيمة افتراضية صريحة.

تم اختباره

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top