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