بتاريخ: 18 يونيو 200421 سنة comment_8515 السلام عليكم ورحمة الله جميعااثناء دراستي لل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افيدوني بارك الله فيكم تقديم بلاغ
بتاريخ: 18 يونيو 200421 سنة comment_8520 السلام عليكم ..نوع الخطأ كما تلاحظ فى رسالة الاوراكل خاص باوامر ال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 تقديم بلاغ
بتاريخ: 18 يونيو 200421 سنة comment_8521 اسلام عليكم .. استكمال للشرح 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 . تقديم بلاغ
بتاريخ: 21 يونيو 200421 سنة كاتب الموضوع comment_8627 بارك الله فيك يا اخ امجدولكنني عندما قرات عنها لم يتم الاشارة بشكل او باخر الى الـ vew اثناء الكلام عن هذه الجملة,فقط انها تستخدم في جمل الDML (data manipulate lang ) وبالذات عندما نستخدم جملة فرعية(subquery) في عملية تحديث او ادخال...؟!اذا ممكن مثال مشروح بالعربي..وبارك الله فيك مرة اخرى تقديم بلاغ
بتاريخ: 21 يونيو 200421 سنة comment_8629 السلام عليكم ..استخدام ال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 تقديم بلاغ
بتاريخ: 23 يونيو 200421 سنة كاتب الموضوع comment_8665 thanks 2 much amjad , its more understandable nowrabbena yekhaleek تقديم بلاغ
بتاريخ: 5 يوليو 200421 سنة كاتب الموضوع comment_9055 السلام عليكم ورحمة الله وبركاته،، 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. تقديم بلاغ
بتاريخ: 29 نوفمبر 200619 سنة comment_85137 بارك الله فيك اخي الفاضل و اتمنى من الله ان يتم عليكم بثمرة هذا العمل و تحمل أمانة العلم تقديم بلاغ
بتاريخ: 2 ديسمبر 200619 سنة comment_85587 السلام عليكم ....الاخ امجد قال الي فيه الكفايه ربنا يكرمه ان شاء الله .....سلامي................. تقديم بلاغ
بتاريخ: 18 يناير 200719 سنة comment_89655 أخى العزيزWITH CHECK OPTION تتأكد من أن البيانات التى سوف تدخلها إلى الجدول تكون هى التى تم إستخدامها فى WHERE ولكن يلاحظ لا تستخدم DEFAULT عند الإدخال عن طريق الVIEWيمكنك إعتبار الVIEW هى عبارة عن جدول ولكن ليس جدول فعلى ولكنة عبارة عن نافذة تنظهر إلى جزء معين من الجدول و WITH CHECK OPTION تجعل VIEW تنظر إلى هذا الجزء من الجدول فقط ولا يمكن الأضافى إلى اى جزء أخر منهشكرا .... تم تعديل 18 يناير 200719 سنة بواسطة mahmoudwow تقديم بلاغ
بتاريخ: 24 يناير 200719 سنة comment_90080 اخى امجد لقد قرأت شرحك وهو جميل لكن لم تصل الى فائدة عبارة with check optionلان ما قلته من مراعاة الشروط سواء كتبنا عبارة with check option او لم نكتبها سيقوم الاوراكل بمراعاة هذه الشرط عند عمل اى ادخال للبيانات فى الجدول لكن ما نريد فهمه ما هى فائدة هذه العباره فى الجمله هل وجودها خاص بالقيوم انه لا يتم المساس بها ام وجودها خاص بعدم تغيير اى بيانات خارج عبارة subquery واذا كان هذا صحيح فكيف يتم تغيير بيانات لم نذكرها اصلا ولم ندخلها فى الموضوعارجو افادتنا تقديم بلاغ
بتاريخ: 24 يناير 200719 سنة comment_90097 السلام عليكم ورحمة الله هذا الامر with check option يعنى انه لابد من الالتزام بتفيذ الشرط الموجوداولا :مع امر الادخال insert ففى السؤال الاول للأخ السائل .. مع امر الادخال insert باستخدام الsub queryلايمكن اضافة سجل جديد الا بوجود معلومة رقم الادارة هذا اولا ..... وثانيا يجب ان تكون قيمتها اصغر من 10 حسب الشرط ثانيا :مع مثال ال view و محاولة التعديل بامر updateتم انشاء ال view بناء على شرط معين .. وهو ان الاداره = 20 فلن يسمح بتغيير الادارة لاي من الموظفين العاملين باداره 20ارجوا ان تكون الفكرة اتضحت .. فى انتظار استفساراتك تم تعديل 25 يناير 200719 سنة بواسطة Amgad تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.