fbpx

בגרסאות קודמות של Oracle יכולנו לשלוט על יכולות עדכון הטבלה עבור יוזרים שונים באמצעות פקודות DCL (Data Control Language) כגון Grant, Revoke, או לחילופין יכולנו להשתמש ב Views.

החל מגרסת Oracle 11gR1 יש באפשרותנו להגדיר טבלה מסויימת למצב Read Only

 

HR > CONN hr/hr

Connected.

HR > CREATE TABLE new_employees

  2  AS SELECT employee_id , last_name , salary

  3  FROM employees ;

Table created.

כדי להפוך את הטבלה ל Read Only פשוט נקליד :

HR > ALTER TABLE new_employees READ ONLY;

Table altered.

כאשר ננסה לעדכן את הטבלה, נקבל את השגיאה ORA-12081

HR > UPDATE new_employees SET salary = salary + 1 ;

UPDATE new_employees SET salary = salary + 1

       *

ERROR at line 1:

ORA-12081: update operation not allowed on table "HR"."NEW_EMPLOYEES";

HR > TRUNCATE TABLE new_employees ;

TRUNCATE TABLE new_employees

               *

ERROR at line 1:

ORA-12081: update operation not allowed on table "HR"."NEW_EMPLOYEES"

HR > ALTER TABLE new_employees

  2  ADD new_column number(3) ;

ALTER TABLE new_employees

*

ERROR at line 1:

ORA-12081: update operation not allowed on table "HR"."NEW_EMPLOYEES"

ניתן לראות את סטטוס הטבלה באמצעות user_tables

HR > SELECT table_name , read_only

  2  FROM user_tables

  3  WHERE table_name = 'NEW_EMPLOYEES' ;

TABLE_NAME                     REA

------------------------------ ---

NEW_EMPLOYEES                  YES

כדי להפוך את הטבלה ל Read Write פשוט נקליד :

HR > ALTER TABLE new_employees READ WRITE;

Table altered.

HR > UPDATE new_employees SET salary = salary + 1 ;

107 rows updated.

HR > SELECT table_name , read_only

  2   FROM user_tables

  3   WHERE table_name = 'NEW_EMPLOYEES' ;

TABLE_NAME                     REA

------------------------------ ---

NEW_EMPLOYEES                  NO