كيفية تغيير المعرف في جداول MySQL الحالية مع البيانات إلى التلقائي من آخر معرف؟
-
26-09-2019 - |
سؤال
لقد تمكنت للتو من ترحيل قاعدة بيانات كبيرة جدًا من 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. إذا كنت ترغب في توفير قيم صريحة ، فيمكنك القيام بذلك دون حدوث أي شيء خاص. لذلك كان بإمكانك تعيين هذه الأعمدة على التغذية التلقائية مباشرة من البداية.
لا يمكن أن يكون للعمود الذي يحتوي على مكونات تلقائية قيمة افتراضية صريحة.
تم اختباره