إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

with check option


11 رد (ردود) على هذا الموضوع

#1 trust_words

trust_words

    عضو مميز

  • الأعضــاء
  • 730 مشاركة

تاريخ المشاركة 18 June 2004 - 12:19 PM

السلام عليكم ورحمة الله جميعا
اثناء دراستي للSQL واجهتني عبارة الـ with check option في موضوع الـDML
وخصوصا الـ insert statement . الواقع انا قرأت انها تمنع أي تغييرات في أي عمود غير موجود في الـsubquery المستخدمة في جملة الادخال, ولكني لم افهم ذلك,كيف يمكن تغيير اعمدة ليست مذكورة في subquery اصلا ؟؟ فضلا عن كيفية الجماية من هذه التغييرات !؟؟ هذا مقطع مثال من الـ sql reference حصلت عليه بعد البحث في الانترنت والكتاب التي لدي .. ولكن لم اجد التفصيل الذي اريد ه حتى افهمها جيدا :

[sql]
WITH CHECK OPTION Example
The following statement is legal even though the second value violates the condition of the subquery where_clause:

INSERT INTO
(SELECT employee_id, last_name, email, hire_date, job_id, salary
FROM employees WHERE department_id < 10)
VALUES (99999, 'Taylor', 'Taylor@oracle.com',
TO_DATE('07-JUN-99', 'DD-MON-YY'), 'PU_CLERK', 5000);


However, the following statement is illegal because it contains the WITH CHECK OPTION clause:

INSERT INTO
(SELECT employee_id, last_name, email, hire_date, job_id, salary
FROM employees WHERE department_id < 10 WITH CHECK OPTION)
VALUES (99999, 'Taylor', 'Taylor@oracle.com',
TO_DATE('07-JUN-99', 'DD-MON-YY'), 'PU_CLERK', 5000);
insert into
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation
افيدوني بارك الله فيكم :(
وقل رب زدني علما...


ومانيل المطالب بالتمني . . . . ولـكن تــؤخــذ الدنـيا غـلابـــا !

#2 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,559 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 18 June 2004 - 02:51 PM

السلام عليكم ..
نوع الخطأ كما تلاحظ فى رسالة الاوراكل خاص باوامر الView
ارفق اقتباس شرح للView فيما يخص الامر with check option


Using the WITH CHECK OPTION Clause
You can ensure that DML on the view stays-
within the domain of the view by using the
WITH CHECK OPTION clause.

SQL> CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM emp WHERE deptno = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck;


View created

Any attempt to change the department -
number for any row in the view will fail
because it violates the WITH CHECK OPTION
constraint.

Using the WITH CHECK OPTION Clause-
It is possible to perform referential integrity checks through views. You can also enforce constraints
at the database level. The view can be used to protect data integrity, but the use is very limited.
The WITH CHECK OPTION clause specifies that INSERTS and UPDATES performed through the
view are not allowed to create rows that the view cannot select, and therefore it allows integrity
constraints and data validation checks to be enforced on data being inserted or updated.
If there is an attempt to perform DML operations on rows that the mow has not selected, an error is
displayed, with the constraint name if that has been specified

SQL> UPDATE empvu20
SET deptno = 10
WHERE einpno = 7788;


update empvu20
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation


لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#3 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,559 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 18 June 2004 - 02:54 PM

اسلام عليكم ..
استكمال للشرح

Note: No rows are updated because if the department number were to change to 10. the view would no longer be able to see that employee Therefore, with the WITH CHECK OPTION clause, the view can see only department 20 employees and does not allow the department number for those employees to be changed through the view

.

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#4 trust_words

trust_words

    عضو مميز

  • الأعضــاء
  • 730 مشاركة

تاريخ المشاركة 21 June 2004 - 11:40 PM

بارك الله فيك يا اخ امجد
ولكنني عندما قرات عنها لم يتم الاشارة بشكل او باخر الى الـ vew اثناء الكلام عن هذه الجملة,فقط انها تستخدم في جمل الDML (data manipulate lang
) وبالذات عندما نستخدم جملة فرعية(subquery) في عملية تحديث او ادخال...؟!
اذا ممكن مثال مشروح بالعربي..وبارك الله فيك مرة اخرى
وقل رب زدني علما...


ومانيل المطالب بالتمني . . . . ولـكن تــؤخــذ الدنـيا غـلابـــا !

#5 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,559 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 22 June 2004 - 02:45 AM

السلام عليكم ..
استخدام الsubquery مع ال insert .. فى هذه الحالة لايتم استخدام اسم الجدول ولكن يستبدل بمكونات الsubquery مع تحديد الحقول التي سيتم ادخال القيم بها .
الشرط الاساسي لتنفيذ هذه الطريقة هو تساوي عدد الحقول مع ال subquery ومع امر insert وايضا الترتيب .
طبعا شروط التعامل مع الجدول لابد من تحققها مع امر الادخال مثل وجود حقل الprimary key او ترك حقل اجباري بدون اسناد قيمة له not null . او تكرار الPrimary key .

مع استخدام امر with check option سيتم التأكد من تحقيق الشروط الموجودة مع امر الwhere
تلاحظ فى مثالك الثاني لم يتم ذكر حقل رقم الادارة ضمن حقول الادخال . ليست ضمن حقول الselect وايضا ليست ضمن حقول الinsert وفى هذه الحالة سيتم تحريك Null فى حقل رقم الادارة وفى نفس الوقت لن يتحقق شرط الselect بأن يكون رقم الادارة اقل من 10 .
وفى هذه الحالة تظهر رسالة خطأ انه امر الادخال لا يتناسب مع شروط subquery .

ORA-01402: view WITH CHECK OPTION where-clause violation

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#6 trust_words

trust_words

    عضو مميز

  • الأعضــاء
  • 730 مشاركة

تاريخ المشاركة 23 June 2004 - 12:02 PM

thanks 2 much amjad , its more understandable now
rabbena yekhaleek :(
وقل رب زدني علما...


ومانيل المطالب بالتمني . . . . ولـكن تــؤخــذ الدنـيا غـلابـــا !

#7 trust_words

trust_words

    عضو مميز

  • الأعضــاء
  • 730 مشاركة

تاريخ المشاركة 05 July 2004 - 10:18 AM

السلام عليكم ورحمة الله وبركاته،،
i am sorry for long disconnection, but does this "with check option "is for one case!? idont think so, so that i just want u to help me by many examples in other cases. :(
وقل رب زدني علما...


ومانيل المطالب بالتمني . . . . ولـكن تــؤخــذ الدنـيا غـلابـــا !

#8 osama80

osama80

    مشترك

  • الأعضــاء
  • 84 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 29 November 2006 - 02:44 PM

بارك الله فيك اخي الفاضل و اتمنى من الله ان يتم عليكم بثمرة هذا العمل و تحمل أمانة العلم

#9 zaeen

zaeen

    مشترك

  • الأعضــاء
  • 108 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 02 December 2006 - 06:58 PM

السلام عليكم ....
الاخ امجد قال الي فيه الكفايه ربنا يكرمه ان شاء الله .....
سلامي.................
===========================

ومـــــــــا بكــــم من نعمــــه فمــــن اللــــــــه وحــــــده
[يسار][/يسار]

Zain Muhamed
OCP Developer
OCP DBA
Sun Certified Java Programmer SCJP

#10 mahmoudwow

mahmoudwow

    عضو

  • الأعضــاء
  • 9 مشاركة

تاريخ المشاركة 18 January 2007 - 04:20 PM

أخى العزيز
WITH CHECK OPTION تتأكد من أن البيانات التى سوف تدخلها إلى الجدول تكون هى التى تم إستخدامها فى WHERE ولكن يلاحظ لا تستخدم DEFAULT عند الإدخال عن طريق الVIEW
يمكنك إعتبار الVIEW هى عبارة عن جدول ولكن ليس جدول فعلى ولكنة عبارة عن نافذة تنظهر إلى جزء معين من الجدول و WITH CHECK OPTION تجعل VIEW تنظر إلى هذا الجزء من الجدول فقط ولا يمكن الأضافى إلى اى جزء أخر منه
شكرا ....

تم التعديل بواسطة mahmoudwow, 18 January 2007 - 04:23 PM.


#11 a_m2

a_m2

    مشترك

  • الأعضــاء
  • 169 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 24 January 2007 - 09:08 PM

اخى امجد لقد قرأت شرحك وهو جميل لكن لم تصل الى فائدة عبارة with check option
لان ما قلته من مراعاة الشروط سواء كتبنا عبارة with check option او لم نكتبها سيقوم الاوراكل بمراعاة هذه الشرط عند عمل اى ادخال للبيانات فى الجدول لكن ما نريد فهمه ما هى فائدة هذه العباره فى الجمله هل وجودها خاص بالقيوم انه لا يتم المساس بها ام وجودها خاص بعدم تغيير اى بيانات خارج عبارة subquery
واذا كان هذا صحيح فكيف يتم تغيير بيانات لم نذكرها اصلا ولم ندخلها فى الموضوع
ارجو افادتنا

#12 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,559 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 25 January 2007 - 02:54 AM

السلام عليكم ورحمة الله

هذا الامر with check option يعنى انه لابد من الالتزام بتفيذ الشرط الموجود

اولا :
مع امر الادخال insert

ففى السؤال الاول للأخ السائل .. مع امر الادخال insert باستخدام الsub query

لايمكن اضافة سجل جديد الا بوجود معلومة رقم الادارة هذا اولا .....
وثانيا يجب ان تكون قيمتها اصغر من 10 حسب الشرط

ثانيا :
مع مثال ال view و محاولة التعديل بامر update

تم انشاء ال view بناء على شرط معين .. وهو ان الاداره = 20

فلن يسمح بتغيير الادارة لاي من الموظفين العاملين باداره 20

ارجوا ان تكون الفكرة اتضحت ..

فى انتظار استفساراتك

تم التعديل بواسطة Amgad, 25 January 2007 - 03:10 AM.

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....