(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

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

Источник: all-oracle

Рекомендовано для:
  • 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.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 09.04.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Personal Edition Named User Plus License
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Standard Edition 2 Processor License
SmartBear Collaborator - Concurrent User License (Includes 1 Year Maintenance)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Delphi - проблемы и решения
Новые программы для Windows
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100