سؤال

ولقد لاحظت في الآونة الأخيرة أن يدعو dbms_mview.refresh (...)، والذي ينعش جهات النظر تتحقق في أوراكل، لديه ضمنا ارتكاب.

وأي أفكار - بخلاف "لأنه يفعل؟" - لماذا هذا عمل له ضمنا ارتكاب

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

المحلول

واعتمادا على نسخة أوراكل و / أو المعلمات قمت بتوفير dbms_mview.refresh يمكن أن تقوم بعمل باقتطاع تليها تحميل المباشر. باقتطاع هو أمر DDL وعلى هذا النحو قضايا ارتكاب ضمنية. لا يتطلب تحميل مباشر على ارتكاب.

إذا كنت تستخدم إصدار أحدث من أوراكل، وأعتقد أن 10.2+، يمكنك تعيين المعلمة atomic_refresh إلى TRUE وسيتم تحديث داخل معاملة واحدة، وذلك باستخدام معيار حذف / إدراج. يمكن أن يكون هذا الأسلوب أبطأ قليلا جدا بالرغم من ذلك.

نصائح أخرى

ووفقا لتوم كايت فذلك لأن <لأ href = "http://asktom.oracle.com/pls/asktom/f؟p=100:11:0::::P11_QUESTION_ID:4541191739042" يختلط = "noreferrer "> تم اتخاذ قرار في وقت التصميم للنظر منعش لتكون عملية DDL . ونظرا لأن جميع عمليات DDL الالتزام ضمنيا، لذلك لا هذا واحد. للأسف انه لا يجيب على السؤال الناتجة لماذا اختاروا لجعله DDL.

وهناك عمل: حول هو أن تفعل الدعوة إلى dbms_mview.refresh في معاملة مستقلة (إنشاء إجراء PL / SQL مع autonomous_transaction PRAGMA).

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