اوراکل اپکس-محافظت از Insert و Update در View اوراکل

محافظت از View برای Insert و Update در اوراکل

هنگامی که یک View در اوراکل ایجاد می کنید و دارای شرط می باشد، براحتی می توان براساس برعکس آن شرط اطلاعات را ثبت و ذخیره کرد. حال برای جلوگیری از این عمل می توان از [WITH CHECK OPTION] در انتهای view استفاده کرد. برای درک بهتر به مثال زیر توجه کنیم:
create or replace view emp_view as
select * from emp
where deptno in(20,30);
select * from emp;
Result:
BLAKE 2850 30
SCOTT 3000 20
KING 5000 10
select ENAME,SAL,DEPTNO
from emp_view;
Result:
BLAKE 2850 30
SCOTT 3000 20
در این حالت می توانیم در اوراکل براحتی بدون هیچگونه محافظتی یک رکورد بر خلاف شرط از طریق View ایجاد کنیم.

insert into emp_view(ENAME,SAL,DEPTNO)
values('saeed','10000',10);
۱ Row Inserted
برای محافظت، بدین صورت View را در اوراکل ایجاد می کنیم و در هنگام Insert با خطای زیر مواجه می شویم.
create or replace view emp_view as
select * from emp
where deptno in(20,30)
WITH CHECK OPTION;
insert into emp_view(ENAME,SAL,DEPTNO)
values('saeed','10000',10);
[ORA-01402: view WITH CHECK OPTION where-clause violation]
محافظت از View برای Insert و Update در اوراکل
امتیاز ۵ از ۱ رای

2 دیدگاه. همین الان خارج شوید

  • سلام و خسته نباشید
    این روش فقط جلوی insert را میگیرد. درست است؟ اگر update ای با همان شروط ویو صورت گیرد خطایی برنمیگرداند؟
    در ضمن می توانید به مطلب option: with read only را نیز اضافه فرمایید که کاملتر شود.
    متشکرم

    پاسخ
    • سعید حسن پور
      دسامبر 2, 2019 8:42 ق.ظ

      با سلام خدمت دوست گرامی
      در ابتدا تشکر می کنم برای اینکه نظر خودتان را اظهار میکنید.

      این روش فقط جلوی insert را میگیرد. درست است؟

      بله. امکان ایجاد رکورد جدید در صورتیکه که خارج از شرط ویو باشد نمی دهد. در واقع هدف این است که نتوان خارج از شرط ویو عملیات بر روی View ایجاد گردد. نه اینکه اصلا نتوان عملیاتی را انجام داد.

      اگر update ای با همان شروط ویو صورت گیرد خطایی برنمیگرداند؟

      در واقع علت اینکه در هدر مطلب کلمه update را آوردم می خواستم اشاره کنم که دوستان نگران بروزرسانی اطلاعات ، خارج از شرط های ویو نباشد. شما وقتی عمل update را انجام می دهید به رکورد موجود در ویو اشاره می کنید و اگر وجود نداشته باشد در واقع یعنی اصلا موجودیت ندارد و هیچ رکوردی بروز نمی شود و خطا هم نمی دهد.

      در ضمن می توانید به مطلب option: with read only را نیز اضافه فرمایید که کاملتر شود.

      با تشکر از شما برای اضافه کردن این Option. کاربرد آن برای مواقعی است که کلا نمی خواهیم از طریق این View عملیات INSERT, UPDATE, DELETE صورت گیرد.

      پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست
Oracle APEX Capabilities (OAC)