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

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

صورة
- - - - -

With Read Only.... With Check Option


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

#1 mido_develper

mido_develper

    عضو نشط

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

تاريخ المشاركة 02 February 2009 - 10:35 PM

من فضلكم كنت عاوز اعرف الفرق بين المثالين دول:

المثال الاول:

CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT employee_id, last_name, job_id
FROM employees WHERE department_id = 10
WITH READ ONLY;



المثال الثانى:

CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM employees WHERE department_id = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck ;



يعنى باختصار كنت عاوز اعرف الفرق بين

WITH READ ONLY
و
WITH CHECK OPTION CONSTRAINT empvu20_ck


وجزاكم الله كل خير.......................

#2 mohooo81

mohooo81

    عضو نشط

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

تاريخ المشاركة 03 February 2009 - 02:20 AM

بص يا مان
انا بعمل with read only
كقيد على الفيو لما ارغب ان مفيش اى حد يضيف او يحذف او يضيف فى الفيو.
اما with check option
دة قيد على عمود معين يعنى محدش يقدر يعدل او يحذف او يضيف الا اللى انشاء هذا الفيو.

تم التعديل بواسطة mohooo81, 03 February 2009 - 02:21 AM.

مالا يدرك كلة لا يترك كلة

#3 mido_develper

mido_develper

    عضو نشط

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

تاريخ المشاركة 28 February 2009 - 05:20 PM

جزاك الله كل خير علي الرد

بس بالنسبة للمثال التانى

CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM employees WHERE department_id = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck ;


هنا مش محدد العمود الذي تم عمل عليه WITH CHECK OPTION



وجزاكم الله كل خير

#4 TROYMAN

TROYMAN

    مشترك

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

تاريخ المشاركة 28 February 2009 - 08:30 PM

بالنسبة للمثال الأول يمنع عمليلات DML على هذه الفيو..ويسمح بالاستعلام فقط حسب الشرط
بينما بالمثال الثاني يسمح بتعليمات الDML و لكن حسب الشرط


<<اللهم لا علـم لنا إلا ما علّمتنا إنك أنت العليــم الحكيــم>>
<<اللهم علّمنا ما ينفعنا و انفعنا بما علّمتنا و ازدنا علماً>>



Programmer (C#.Net,C++,ASP) & Oracle Developer


#5 TROYMAN

TROYMAN

    مشترك

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

تاريخ المشاركة 28 February 2009 - 09:29 PM

يمكنك فهم العملية عن طريق مجموعة الأمثلة التالية:

SQL>  create or replace view v1 (Empoyee_No,Employee_Name,Department_ID) as 2   select empno,ename,deptno from emp 3   where 4   deptno in (10,20);

View created.


SQL> select * from v1; EMPOYEE_NO EMPLOYEE_N DEPARTMENT_ID
---------- ---------- -------------
7369 SMITH 20
7566 JONES 20
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7876 ADAMS 20
7902 FORD 20
7934 MILLER 10

8 rows selected.


SQL> insert into v1 values(1001,'hassan',30);

1 row created.


1   create or replace view v2 (Empoyee_No,Employee_Name,Department_ID) as 2   select empno,ename,deptno from emp 3   where 4   deptno in (10,20)
5* with check option
SQL> /

View created.


SQL> select * from v2; EMPOYEE_NO EMPLOYEE_N DEPARTMENT_ID
---------- ---------- -------------
7369 SMITH 20
7566 JONES 20
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7876 ADAMS 20
7902 FORD 20
7934 MILLER 10

8 rows selected.


SQL> insert into v2 values(1002,'hassan',30);
insert into v2 values(1002,'hassan',30)
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation


1   create or replace view v3 (Empoyee_No,Employee_Name,Department_ID) as 2   select empno,ename,deptno from emp 3   where 4   deptno in (10,20)
5* with read only
SQL> /

View created.


SQL> select * from v3; EMPOYEE_NO EMPLOYEE_N DEPARTMENT_ID
---------- ---------- -------------
7369 SMITH 20
7566 JONES 20
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7876 ADAMS 20
7902 FORD 20
7934 MILLER 10

8 rows selected.


SQL> insert into v3 values (1002,'hassan',30);
insert into v3 values (1002,'hassan',30)
*
ERROR at line 1:
ORA-01733: virtual column not allowed here





<
<
<
<



create or replace view v2 (Empoyee_No,Employee_Name,Department_ID) as select empno,ename,deptno from emp;


هذا يكافىء تماماً لاحظ الـAlias

create or replace view v2  as select empno Empoyee_No,ename Employee_Name ,deptno Department_ID from emp;


<<اللهم لا علـم لنا إلا ما علّمتنا إنك أنت العليــم الحكيــم>>
<<اللهم علّمنا ما ينفعنا و انفعنا بما علّمتنا و ازدنا علماً>>



Programmer (C#.Net,C++,ASP) & Oracle Developer


#6 mido_develper

mido_develper

    عضو نشط

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

تاريخ المشاركة 28 February 2009 - 11:26 PM

جزاك الله كل خير علي الرد وعلي الامثلة

انا نفذت اول مثال
CREATE OR REPLACE VIEW v1(employee_no, employee_name, department_id)
AS SELECT employee_id, last_name, department_id
FROM employees WHERE department_id IN (10, 20);


تمام وبعدين عملت المثال التالت
insert into v1 values(1001,'hassan',30);



بس طلعتلي ال error دي
SQL>  insert into v1 values(1001,'hassan',30);
insert into v1 values(1001,'hassan',30)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("HR"."EMPLOYEES"."EMAIL")


#7 TROYMAN

TROYMAN

    مشترك

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

تاريخ المشاركة 01 March 2009 - 12:14 PM

هذا الخطأ بسبب الحقل Email حاطط عليه قيد NN و ما لك حاطو بالفيو..
يعني باختصار ... إذا أردت فيو تقبل عمليات DML يجب تضمين كل الحقول التي تحوي قيد NN بما فيهم PK


<<اللهم لا علـم لنا إلا ما علّمتنا إنك أنت العليــم الحكيــم>>
<<اللهم علّمنا ما ينفعنا و انفعنا بما علّمتنا و ازدنا علماً>>



Programmer (C#.Net,C++,ASP) & Oracle Developer