سؤال

ولدي جدول يحتوي على مشغل إدراج على ذلك. إذا كنت إدراج في 6000 سجلات في هذا الجدول في بيان إدراج واحد من إجراء مخزن، سوف المخزنة عودة الإجراء قبل اكتمال مشغل إدراج؟

وفقط للتأكد من أن أفكر بشكل صحيح، يجب أن يسمى الزناد فقط (وأنا أعلم 'استدعاء' ليست الكلمة الصحيحة) مرة واحدة لأنه كان هناك 1 إدراج بيان فقط، أليس كذلك؟

وسؤالي الرئيسي هو: سوف النهاية sproc حتى لو لم يستكمل على الزناد

هل كانت مفيدة؟

المحلول

وسيتم تشغيل إدراج المشغل الخاص بك مرة واحدة لبيان إدراج بأكمله. وهذا هو السبب في أنه من المهم استخدام الجدول المؤقت inserted لمعرفة ما تم بالفعل إدراج، وليس فقط تحديد سجل واحد آخر، أو شيء من هذا القبيل.

ولقد اختبرت على إدراج وتحديث الزناد والواقع، فهي تعتبر جزءا من إدراج من قبل مزود خدمة. فإن العملية لن تنتهي حتى ينتهي الزناد.

نصائح أخرى

والنوابض هي جزء من الصفقة التي دعا لهم.

وشيء واحد مهم حول المشغلات التي يجب أن تكون على علم هو أن حرائق الزناد مرة واحدة لكل معاملة (على الأقل في خادم SQL، يجب أن تحقق DBS الأخرى، ولكن حتى لو كان ذلك سوف نقوم بمعالجة من صف، وهذا هو عادة ما يكون الفقيرة الفكرة)، لذلك إذا قمت بإدراج 6000 يسجل حرائق الزناد مرة واحدة لا 6000 مرة. كثير من الناس لا يدركون هذا والكتابة المشغلات كما لو أنهم سوف نقوم بمعالجة سجل متعددة إدراج سجل واحد في وقت واحد. هذا ليس صحيحا والمشغل الخاص بك يجب أن تشكل لتسليم إدراج سجل المتعدد.

والدعوة الزناد ليست متزامنة. كل استدعاء الإجراء إدراج الخاص بك سوف تؤدي في المشغل تطلق، وسوف الإجراء لن يعود حتى انتهاء الزناد.

ونلقي نظرة على خطة الاستعلام لنرى كيف يعمل. سترى أن البيانات في المشغل وسوف يطلق على كل استدعاء الإجراء.

والشيء هو، في كل مرة يتم استيفاء المعايير TRIGGER وحرائق TRIGGER. انها تطلق مرة واحدة في تجهيز الدفعات أو عملية. أرى الدرس 101 على TRIGGER

ويجب عليك استخدام المؤشر في بيان إدراج لمعالجة الخلاف الزناد. لأن المشغلات في النار خادم SQL مرة واحدة في البيان، وليس مرة واحدة في صف واحد.

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