حل التعارض في جداول ذات إصدارات
-
29-09-2020 - |
سؤال
أحاول دمج مساحتي عمل تحتويان على جداول تدعم الإصدار.لا يمكنني معرفة كيفية حل التعارضات ، لأن لدي العديد من الصفوف بنفس قيمة المعرف.تختلف فقط في الفاصل الزمني.إذا قمت بتنفيذ شيء مثل هذا:
DBMS_WM.ResolveConflicts('W_CHILD', 'SOME_TABLE', 'ID=1', 'CHILD');
أي صف سيتم استخدامه؟كيف يمكنني تحديد صف ملموس؟
المحلول
يتم اكتشاف التعارضات تلقائيًا عند طلب عملية دمج أو تحديث ، ويتم تقديمها إلى المستخدم في طرق عرض التعارض.هناك طريقة عرض تعارض واحدة لكل جدول. لكل طريقة عرض تعارض اسم في الشكل table_name_CONF.\ n للاحتفاظ بالصفوف التي تريدها ، دعني أولاً أريك بناء جملة إجراء ResolveConflicts.\ن
DBMS_WM.ResolveConflicts( workspace IN VARCHAR2, table_name IN VARCHAR2, where_clause IN VARCHAR2, keep IN VARCHAR2);
يمكنك استخدام معلمة "keep" لتحديد أي (أصل أو فرعي أو أساسي) لحل التعارضات.\ن\ n في حالتك ، قمت بتعريف "CHILD" لمعامل keep.ويحدد where_clause (ID = 1 في حالتك) الصفوف المراد تحديثها.يحل الإجراء الخاص بك التعارضات التي تتضمن صفوفًا في جدول SOME_TABLE في W_CHILD حيث يكون المعرف 1 ، ويستخدم القيم الموجودة في مساحة العمل التابعة لحل كل هذه التعارضات.\ n للحصول على التفاصيل ، قم بزيارة وثائق Oracle: حزمة DBMS_WM: المرجع