لا يُصمم AUTO_INCREMENT ليجعل أرقام الصفوف متصلة بلا فجوات. وظيفته توليد معرّفات جديدة، ولذلك قد تبقى أرقام غير مستخدمة بعد حذف بعض الصفوف. حذف صف بأمر DELETE لا يعيد ترقيم الصفوف الباقية، ولا يجعل الرقم المحذوف هو الاختيار التلقائي للإدخال التالي.
في جدول InnoDB على MySQL 8، إذا وُلّدت الأرقام 1 و2 و3 ثم حُذف الصف 3، فإن الإدخال التالي في التسلسل البسيط يستخدم 4. نفترض هنا الإعدادات الافتراضية، وعدم وجود إدخالات متزامنة أو تغيير يدوي لعداد التوليد. لا ينبغي تفسير الفجوة على أنها تلف في البيانات.
مثال
CREATE TABLE tasks (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(30) NOT NULL
);
INSERT INTO tasks (title) VALUES ('A'), ('B'), ('C');
DELETE FROM tasks WHERE id = 3;
INSERT INTO tasks (title) VALUES ('D');
إذا احتجنا إلى عدد المهام، نحسب الصفوف الموجودة بدل الاستنتاج من أكبر معرّف. فالمعرّف يميز السجل ولا يمثل موضعه الحالي بين الصفوف.
باختصار: يترك الحذف فجوات طبيعية، ولا يعيد AUTO_INCREMENT ملأها تلقائيًا أو إعادة ترتيب المعرّفات.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.