Таблиці тільки для читання в Oracle 11g Release 1








Рекомендовано для:

  • Oracle Database 11g R1
 

У попередніх версіях Oracle, зробити таблицю тільки для читання, для інших користувачів можна було давши об’єктні привілеї SELECT користувачеві. Але для самого власника таблиця залишалася доступною для запису. Oracle 11g дозволяє створювати таблиці які позначаються “тільки для читання”, використовуючи команду ALTER TABLE.


ALTER TABLE table_name READ ONLY;
ALTER TABLE table_name READ WRITE;

Наступний скрипт створює таблицю, додає в неї кілька рядків, потім устанавілівает таблицю в режим “тільки для читання”.


CREATE TABLE ro_tab (
id NUMBER
);
INSERT INTO ro_tab VALUES (1);
INSERT INTO ro_tab VALUES (2);
INSERT INTO ro_tab VALUES (3);
INSERT INTO ro_tab VALUES (4);
ALTER TABLE ro_tab READ ONLY;

Будь-яка пропозиція DML яке буде застосовуватися до даних таблиці і запити SELECT … FOR UPDATE повертатимуть помилку ORA-12081.


SQL> INSERT INTO ro_tab VALUES (5);
INSERT INTO ro_tab VALUES (5)
*
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE “TEST”.”RO_TAB”
SQL> UPDATE ro_tab SET id = 2;
UPDATE ro_tab SET id = 2
*
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE “TEST”.”RO_TAB”
SQL> DELETE FROM ro_tab;
DELETE FROM ro_tab
*
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE “TEST”.”RO_TAB”

Пропозиції DDL так само будуть обмежені.


SQL> TRUNCATE TABLE ro_tab;
TRUNCATE TABLE ro_tab
*
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE “TEST”.”RO_TAB”
SQL> ALTER TABLE ro_tab ADD (description VARCHAR2(50));
ALTER TABLE ro_tab ADD (description VARCHAR2(50))
*
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE “TEST”.”RO_TAB”

Операції над індексами пов’язаними з цією таблицею не будуть застосуються, якщо таблиця в режимі тільки для читання. DML і DDL операції пройдуть нормально, як тільки таблиця буде переключена в режим запису.


SQL> ALTER TABLE ro_tab READ WRITE;
TABLE altered.
SQL> DELETE FROM ro_tab;
1 row deleted.

Статус таблиці можна дізнатися з шпальти READ_ONLY уявлень DBA_TABLES, ALL_TABLES, USER_TABLES.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*