MySQL AUTO_INCREMENT مع الأمثلة
ما هي الزيادة التلقائية؟
الزيادة التلقائية هي وظيفة تعمل على أنواع البيانات الرقمية. فهي تولد تلقائيًا قيمًا رقمية متسلسلة في كل مرة يتم فيها إدراج سجل في جدول لحقل محدد كزيادة تلقائية.
متى تستخدم الزيادة التلقائية؟
في الدرس الخاص بتطبيع قاعدة البيانات، نظرنا في كيفية تخزين البيانات بأقل قدر من التكرار، من خلال تخزين البيانات في العديد من الجداول الصغيرة، المرتبطة ببعضها البعض باستخدام المفاتيح الأساسية والأجنبية.
يجب أن يكون المفتاح الأساسي فريدًا لأنه يحدد صفًا في قاعدة البيانات بشكل فريد. ولكن كيف يمكننا التأكد من أن المفتاح الأساسي فريد دائمًا؟ أحد الحلول الممكنة هو استخدام صيغة لتوليد المفتاح الأساسي، والتي تتحقق من وجود المفتاح في الجدول قبل إضافة البيانات. قد يعمل هذا بشكل جيد ولكن كما ترى فإن النهج معقد وليس مضمونًا. لتجنب مثل هذا التعقيد ولضمان أن المفتاح الأساسي فريد دائمًا، يمكننا استخدام MySQLتستخدم ميزة الزيادة التلقائية في 's لتوليد المفاتيح الأساسية. تُستخدم الزيادة التلقائية مع نوع البيانات INT. يدعم نوع البيانات INT القيم الموقعة وغير الموقعة. لا يمكن لأنواع البيانات غير الموقعة أن تحتوي إلا على أرقام موجبة. كأفضل ممارسة، يوصى بتحديد قيد غير موقع على المفتاح الأساسي للزيادة التلقائية.
بناء جملة الزيادة التلقائية
دعونا الآن نلقي نظرة على البرنامج النصي المستخدم لإنشاء جدول فئات الأفلام.
CREATE TABLE `categories` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`) );
لاحظ "AUTO_INCREMENT" في حقل Category_id. يؤدي هذا إلى إنشاء معرف الفئة تلقائيًا في كل مرة يتم فيها إدراج صف جديد في الجدول. ولا يتم توفيره عند إدخال البيانات في الجدول، MySQL يولد ذلك.
افتراضيًا، قيمة البداية لـ AUTO_INCREMENT هي 1، وستزداد بمقدار 1 لكل سجل جديد
دعونا نفحص المحتويات الحالية لجدول الفئات.
SELECT * FROM `categories`;
تنفيذ البرنامج النصي أعلاه في MySQL يعطينا workbench مقابل myflixdb النتائج التالية.
| category_id | category_name | remarks |
|---|---|---|
| 1 | Comedy | Movies with humour |
| 2 | Romantic | Love stories |
| 3 | Epic | Story acient movies |
| 4 | Horror | NULL |
| 5 | Science Fiction | NULL |
| 6 | Thriller | NULL |
| 7 | Action | NULL |
| 8 | Romantic Comedy | NULL |
لنقم الآن بإدراج فئة جديدة في جدول الفئات.
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
تنفيذ البرنامج النصي أعلاه ضد myflixdb في MySQL طاولة العمل يعطينا النتائج التالية الموضحة أدناه.
| category_id | category_name | remarks |
|---|---|---|
| 1 | Comedy | Movies with humour |
| 2 | Romantic | Love stories |
| 3 | Epic | Story acient movies |
| 4 | Horror | NULL |
| 5 | Science Fiction | NULL |
| 6 | Thriller | NULL |
| 7 | Action | NULL |
| 8 | Romantic Comedy | NULL |
| 9 | Cartoons | NULL |
لاحظ أننا لم نقدم معرف الفئة. MySQL تم إنشاؤه تلقائيًا لنا لأنه تم تعريف معرف الفئة على أنه زيادة تلقائية.
إذا كنت تريد الحصول على آخر معرف إدراج تم إنشاؤه بواسطة MySQLيمكنك استخدام الدالة LAST_INSERT_ID للقيام بذلك. يحصل البرنامج النصي الموضح أدناه على آخر معرف تم إنشاؤه.
SELECT LAST_INSERT_ID();
يؤدي تنفيذ البرنامج النصي أعلاه إلى الحصول على آخر رقم زيادة تلقائية تم إنشاؤه بواسطة استعلام INSERT. النتائج مبينة أدناه.
ملخص
- خاصية الزيادة التلقائية، عند تحديدها في عمود يحتوي على أنواع بيانات رقمية، يتم إنشاء أرقام بشكل متسلسل كلما تمت إضافة صف جديد إلى قاعدة البيانات.
- تُستخدم الزيادة التلقائية بشكل شائع لإنشاء المفاتيح الأساسية.
- يجب أن يكون نوع البيانات المحدد في الزيادة التلقائية كبيرًا بما يكفي لاستيعاب العديد من السجلات. يؤدي تحديد TINYINT كنوع بيانات لحقل الزيادة التلقائية إلى تحديد عدد السجلات التي يمكن إضافتها إلى الجدول إلى 255 فقط، حيث لن يتم قبول أي قيم تتجاوز ذلك بواسطة نوع البيانات TINYINT.
- يُعتبر تحديد القيد غير الموقّع على المفاتيح الأساسية المتزايدة تلقائيًا ممارسة جيدة لتجنب الحصول على أرقام سلبية.
- عند حذف صف من جدول، لا يتم إعادة استخدام المعرف المتزايد تلقائيًا. MySQL يستمر في توليد أرقام جديدة بشكل متسلسل.
- افتراضيًا، قيمة البداية لـ AUTO_INCREMENT هي 1، وستزداد بمقدار 1 لكل سجل جديد
- للسماح للتسلسل AUTO_INCREMENT بالبدء بقيمة أخرى، استخدم AUTO_INCREMENT = 10

