شبكة تعلم مع ناو

هل يحسب LIMIT في UPDATE الصفوف المطابقة أم القيم المتغيرة؟

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

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

مثال

UPDATE tasks
SET status = 'done'
ORDER BY id
LIMIT 1;

يساعد هذا التفصيل في فهم عمليات التحديث على دفعات. عد الصفوف المستهدفة وعد القيم التي تغيرت مفهومان مختلفان، وقد تختلف أرقامهُما دون أن يكون في الأمر خطأ.

باختصار: يتوقف LIMIT عند عدد الصفوف المطابقة المحدد، ولو كانت قيم بعضها لا تحتاج تغييرًا.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.