Skip to main content
يمكنك تعديل استعلام SELECT الذي جرى تحديده عند إنشاء عرض مادي باستخدام التعليمة ALTER TABLE ... MODIFY QUERY من دون مقاطعة عملية الإدخال. صُمم هذا الأمر لتعديل عرض مادي أُنشئ باستخدام العبارة TO [db.]name. وهو لا يغيّر بنية جدول التخزين الأساسي، كما لا يغيّر تعريف أعمدة العرض المادي، لذلك يكون استخدام هذا الأمر محدودًا جدًا مع العروض المادية التي أُنشئت من دون العبارة TO [db.]name. مثال مع جدول TO
مثال من دون جدول TO التطبيق محدود جدًا، إذ لا يمكنك سوى تغيير قسم SELECT من دون إضافة أعمدة جديدة.

الامتيازات المطلوبة

تتطلب ALTER TABLE ... MODIFY QUERY امتياز ALTER VIEW MODIFY QUERY على العرض. يُنفَّذ الاستعلام الجديد وفق إعداد SQL security الخاص بالعرض، لذا تتطلب العبارة أيضًا الأذونات اللازمة لإنشاء عرض بإعداد SQL security ذاته:
  • SQL SECURITY DEFINER مع مُعرِّف (definer) غير المستخدم الحالي: امتياز SET DEFINER على ذلك المُعرِّف.
  • SQL SECURITY NONE: امتياز ALLOW SQL SECURITY NONE.
إذا غيّرت العبارة نفسها إعداد SQL security باستخدام MODIFY SQL SECURITY، فإن هذه الأذونات تُشترط لإعداد SQL security الجديد بدلًا من القديم. عند استخدام ON CLUSTER، يجري التحقق من صلاحية تنفيذ العبارة على المضيف الذي تُنفَّذ عليه، لذا يجب أن يكون العرض موجودًا على ذلك المضيف، وإلا فستفشل العبارة بالخطأ UNKNOWN_TABLE.

تعليمة ALTER TABLE … MODIFY REFRESH

تُغيّر ALTER TABLE ... MODIFY REFRESH مَعلمات التحديث الخاصة بـ العرض المادي القابل للتحديث، بما في ذلك الجدول الزمني، والتبعيات، والعشوائية، وإعدادات التحديث.
الجدول الزمني (EVERY أو AFTER) إلزامي: إذ تستبدل التعليمة جميع معلمات التحديث دفعةً واحدة. وأي عبارة لا تُحدَّد — RANDOMIZE FOR أو DEPENDS ON أو SETTINGS — تُزال أو تُعاد إلى قيمها الافتراضية. ولتغيير إعدادات التحديث فقط، أعِد استخدام الجدول الزمني الحالي. يُحدِّث الأمر تكوين التحديث للعرض الحالي في موضعه، دون إعادة إنشاء العرض المادي أو جدول الهدف الخاص به، أو مسح بيانات الهدف الحالية، أو إلغاء تحديث قيد التشغيل بالفعل. وتستمر عمليات القراءة من جدول الهدف الحالي أثناء تغيير التكوين. تكرار الأمر باستخدام مواصفة REFRESH الكاملة نفسها آمن. احرص على تكرار كل عبارة ينبغي أن تظل مُكوَّنة، لأن كل تنفيذ يستبدل جميع معلمات التحديث كما هو موضح أعلاه.
القيود:
  • ‏ALTER TABLE ... MODIFY SETTING غير مدعوم في العروض المادية؛ ولا يمكن تغيير إعدادات التحديث إلا عبر MODIFY REFRESH.
  • لا يدعم إضافة APPEND أو إزالته.
  • لا يمكن تغيير إعداد التحديث all_replicas بعد إنشاء العرض.
القائمة الكاملة لإعدادات التحديث موثقة في إعدادات التحديث. كما تظهر حالة التحديث، بما في ذلك الإعدادات المطبقة حاليًا، في system.view_refreshes.