בגרסאות קודמות של 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