الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

اريد شرح Using the EXCEPTIONS table ؟

Featured Replies

بتاريخ:

الاخوة الاعزاء : تحية طيبو وبعد........

ارجو منكم شرح Using the EXCEPTIONS table لاني قد قرأتها من الكتاب ولم أفهمها ، ولم أفهم الهدف من أستخدامها.........الخ،

بتاريخ:

الاخ الكريم
تستخدم EXCEPTIONS
ومعناها الاستثناء يعني ما يسمى ب else
اي في حال عدم تنفيذ جملة select او ارجعت قيمة null
مثلا ينفذ امر آخر في التقارير او الفورم
مثال

select emp_name from employees exceptions
when no_data_found then
return(null);


??????هذا exceptions الذي نعرفه

بتاريخ:
  • كاتب الموضوع

الاخوة الاعزاء : ليس هذا أقصد ولكن الذي أقصده كما ورد في كتب Oracle DBA هو كما يلي :-

1- Create the EXCEPTION table by running the utlexcpt1.sql script

2- execute the ALTER TABLE statement with EXCEPTION option

3- Use subquery on EXCEPTION to locate rows with invalid data

4- Rectify the errors

5- Reexcute ALTER TABLE to enable the constraint

راجياً منكم شرح هذه الخطوات وما هي الفائدة من الEXCEPTION

وشكراً جزيلاً لكم

بتاريخ:

الاخ الكريم
لقد توصلت وبعد عناء الى الحل الذي تريد وان شاء الله يكون الحل
ما تسأل عنه يتعلق بما يسمىConstraint Violation
وكيفية تعريف Violation
حيث انك تريد ان تغير حالة constraint من disable الى enable
ومثلا يكون هذا ال constraint رئيسي primary key وكان معطل وتم ادخال بيانات على الجدول وقد تكون هذه البيانات مكررة وانت تعلم ان primary key لا يقبل المكرر فعند تفعيل ال primary key وبعد ان كان معطل يجب ان يتغاضى عن البيانات المكررة ويبدا التشييك من هذه اللحظة وهو ما يسمى بانتهاك الViolation
constraint
لذلك يستخدم في هذه الحالة ما يسمى ب exceptions
طبعا الاوراكل صنعت ملف جاهز يقوم هذا الجدول بحفظ ارقام rowid الحقول التي تم التعديل عليها بعد تغيير حالة ال constraint الى disable اي كرقيب لما تم التعديل عليه حيث يقوم بحفظ
رقم الحقل واسم الجدول واسم المالك owner او ما يسمى ب schema واسم constraint وتجده على الامتداد
oraclehome\ora92\rdbms\admin\utlexpt1
وموجود داخل هذا الملف السكربت التالي

create table exceptions(row_id urowid,
                owner varchar2(30),
                table_name varchar2(30),
	        constraint varchar2(30));



حيث ينشئ جدول باسم exceptions

حيث تقوم بعمل التالي

SQL> connect system/manager

Connected.

SQL> @e:\oracle\ora92\rdbms\admin\utlexpt1



Table created.




هنا تعمل اظهاار لمحتويات الجدول exceptions

SQL> DESCRIBE exceptions

Name               Null?     Type

--------------------------   -------   ----------------

ROW_ID             ROWID

OWNER                   VARCHAR2(30)

TABLE_NAME              VARCHAR2(30)

CONSTRAINT              VARCHAR2(30)



لنفرض انك قمت بعملية disable ل constraint على الجدول
كالتالي

1  alter table brower.emp

 2* disable constraint emp_deptno_fk

SQL> /



Table altered.



SQL> update brower.emp

 2  set deptno=11 where deptno=10;



3 rows updated.



هذا بالنسبة للنقطة الاولى
النقطة الثانية
2. Execute the ALTER TABLE command using the EXCEPTIONS clause:

هنا تستخدم exceptions في حال اردت التعديل على حالة ال constraint
ويفحص هل هذا ال constraint موجود ام غير موجود
في جدول ال exceptions
يعني المقصود من جدول ال exceptions هو جدول يحتوي على اسماء ال constraint التي تم التعديل عليها حيث يجب عليك اضافة اسم ال constraint و schema واسم الجدول كما كرت سابقا
وحسب التالي


ALTER TABLE [ schema. ] table

ENABLE [validate] {CONSTRAINT constraint

             | PRIMARY KEY

             | UNIQUE ( column [, column ] ... ) }

    [ USING INDEX index_clause ] 

[ EXCEPTIONS INTO [ schema. ] table ]



مثال توضيحي

SQL> alter table brower.emp

 2  enable validate constraint emp_deptno_fk

 3  exceptions into system.exceptions; enable validate constraint emp_deptno_fk

                          *

ERROR at line 2:

ORA-02298: cannot validate (BROWER.EMP_DEPTNO_FK) - parent keys not found




اذا كان جدول exceptions غير موجد به اسم ل schema لهذا ال constraint فانه يضاف بعد التحديث تلقائيا


ويجب عليك القيام بخطوة ال truncated اي مسح جميع البيانات بعد التعديل على exception او مسح كل ما يتعلق بهذا ال constraint بعد التعديل عليه
لاحظ المثال
مع شرح الباقي

3. Identify invalid data by using a subquery on the EXCEPTIONS table:



 1  select rowid, empno, ename, deptno

 2  from brower.emp 3  where rowid in (select row_id

 4                  from exceptions) 5* for update

SQL> /



ROWID                 EMPNO ENAME        DEPTNO

------------------ -------- ---------- --------

AAABbvAADAAAABiAAA     7839 KING             11

AAABbvAADAAAABiAAC     7782 CLARK            11

AAABbvAADAAAABiAAN     7934 MILLER           11



Note:  The for update locks the rows so no one else can change the rows



4. Correct the errors in the data:



 1  update brower.emp

 2  set deptno=10

 3  where rowid in (

 4  'AAABbvAADAAAABiAAA',

 5  'AAABbvAADAAAABiAAC',

 6* 'AAABbvAADAAAABiAAN')

SQL> /



3 rows updated.



SQL> commit;



Commit complete.



5. Truncate the EXCEPTIONS table and reenable the constraint:



SQL> truncate table system.exceptions;



Table truncated.



SQL> alter table brower.emp

 2  enable validate constraint emp_deptno_fk

 3  exceptions into system.exceptions; Table altered.



ارجو ان لا اكون قد اطلت بالشرح ولكن خلاصة الفكرة ان الاوراكل عملت جدول اسمه exceptions تستطيع ان تستخدمه لحل مشاكل ما بعد ايقاف ال constraint
حيث يحصر البيانات التي تم التعديل عليها
واسف على الاطالة
وهذا ما تم التوصل اليه

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.