trust_words بتاريخ: 18 يونيو 2004 تقديم بلاغ مشاركة بتاريخ: 18 يونيو 2004 السلام عليكم ورحمة الله جميعااثناء دراستي للSQL واجهتني عبارة الـ with check option في موضوع الـDMLوخصوصا الـ insert statement . الواقع انا قرأت انها تمنع أي تغييرات في أي عمود غير موجود في الـsubquery المستخدمة في جملة الادخال, ولكني لم افهم ذلك,كيف يمكن تغيير اعمدة ليست مذكورة في subquery اصلا ؟؟ فضلا عن كيفية الجماية من هذه التغييرات !؟؟ هذا مقطع مثال من الـ sql reference حصلت عليه بعد البحث في الانترنت والكتاب التي لدي .. ولكن لم اجد التفصيل الذي اريد ه حتى افهمها جيدا : WITH CHECK OPTION ExampleThe 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', '[email protected]', 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', '[email protected]', 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افيدوني بارك الله فيكم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 18 يونيو 2004 تقديم بلاغ مشاركة بتاريخ: 18 يونيو 2004 السلام عليكم ..نوع الخطأ كما تلاحظ فى رسالة الاوراكل خاص باوامر ال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 theWITH 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 failbecause it violates the WITH CHECK OPTIONconstraint.Using the WITH CHECK OPTION Clause-It is possible to perform referential integrity checks through views. You can also enforce constraintsat 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 theview are not allowed to create rows that the view cannot select, and therefore it allows integrityconstraints 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 isdisplayed, 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 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 18 يونيو 2004 تقديم بلاغ مشاركة بتاريخ: 18 يونيو 2004 اسلام عليكم .. استكمال للشرح 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 . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
trust_words بتاريخ: 21 يونيو 2004 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 21 يونيو 2004 بارك الله فيك يا اخ امجدولكنني عندما قرات عنها لم يتم الاشارة بشكل او باخر الى الـ vew اثناء الكلام عن هذه الجملة,فقط انها تستخدم في جمل الDML (data manipulate lang ) وبالذات عندما نستخدم جملة فرعية(subquery) في عملية تحديث او ادخال...؟!اذا ممكن مثال مشروح بالعربي..وبارك الله فيك مرة اخرى اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 21 يونيو 2004 تقديم بلاغ مشاركة بتاريخ: 21 يونيو 2004 السلام عليكم ..استخدام ال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 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
trust_words بتاريخ: 23 يونيو 2004 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 23 يونيو 2004 thanks 2 much amjad , its more understandable nowrabbena yekhaleek اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
trust_words بتاريخ: 5 يوليو 2004 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 5 يوليو 2004 السلام عليكم ورحمة الله وبركاته،، 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. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
osama80 بتاريخ: 29 نوفمبر 2006 تقديم بلاغ مشاركة بتاريخ: 29 نوفمبر 2006 بارك الله فيك اخي الفاضل و اتمنى من الله ان يتم عليكم بثمرة هذا العمل و تحمل أمانة العلم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
zaeen بتاريخ: 2 ديسمبر 2006 تقديم بلاغ مشاركة بتاريخ: 2 ديسمبر 2006 السلام عليكم ....الاخ امجد قال الي فيه الكفايه ربنا يكرمه ان شاء الله .....سلامي................. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mahmoudwow بتاريخ: 18 يناير 2007 تقديم بلاغ مشاركة بتاريخ: 18 يناير 2007 (معدل) أخى العزيزWITH CHECK OPTION تتأكد من أن البيانات التى سوف تدخلها إلى الجدول تكون هى التى تم إستخدامها فى WHERE ولكن يلاحظ لا تستخدم DEFAULT عند الإدخال عن طريق الVIEWيمكنك إعتبار الVIEW هى عبارة عن جدول ولكن ليس جدول فعلى ولكنة عبارة عن نافذة تنظهر إلى جزء معين من الجدول و WITH CHECK OPTION تجعل VIEW تنظر إلى هذا الجزء من الجدول فقط ولا يمكن الأضافى إلى اى جزء أخر منهشكرا .... تم تعديل 18 يناير 2007 بواسطة mahmoudwow اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
a_m2 بتاريخ: 24 يناير 2007 تقديم بلاغ مشاركة بتاريخ: 24 يناير 2007 اخى امجد لقد قرأت شرحك وهو جميل لكن لم تصل الى فائدة عبارة with check optionلان ما قلته من مراعاة الشروط سواء كتبنا عبارة with check option او لم نكتبها سيقوم الاوراكل بمراعاة هذه الشرط عند عمل اى ادخال للبيانات فى الجدول لكن ما نريد فهمه ما هى فائدة هذه العباره فى الجمله هل وجودها خاص بالقيوم انه لا يتم المساس بها ام وجودها خاص بعدم تغيير اى بيانات خارج عبارة subquery واذا كان هذا صحيح فكيف يتم تغيير بيانات لم نذكرها اصلا ولم ندخلها فى الموضوعارجو افادتنا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 24 يناير 2007 تقديم بلاغ مشاركة بتاريخ: 24 يناير 2007 (معدل) السلام عليكم ورحمة الله هذا الامر with check option يعنى انه لابد من الالتزام بتفيذ الشرط الموجوداولا :مع امر الادخال insert ففى السؤال الاول للأخ السائل .. مع امر الادخال insert باستخدام الsub queryلايمكن اضافة سجل جديد الا بوجود معلومة رقم الادارة هذا اولا ..... وثانيا يجب ان تكون قيمتها اصغر من 10 حسب الشرط ثانيا :مع مثال ال view و محاولة التعديل بامر updateتم انشاء ال view بناء على شرط معين .. وهو ان الاداره = 20 فلن يسمح بتغيير الادارة لاي من الموظفين العاملين باداره 20ارجوا ان تكون الفكرة اتضحت .. فى انتظار استفساراتك تم تعديل 25 يناير 2007 بواسطة Amgad اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.