2017-01-27 8 views
2

Я хотел бы сделать таблицу ORACLE только для чтения. Это возможно с помощью:Как проверить в Oracle, если таблица только для чтения?

ALTER TABLE table1 READ ONLY;

Однако когда table1 уже только для чтения, то изменение таблицы вызывает ошибки.

Таким образом, вопрос заключается в том, как проверить, является ли таблица1 только для чтения, а если нет, то , чтобы сделать ее только для чтения.

ответ

4

Проверить user_tables:

select read_only 
from user_tables 
where table_name = 'TABLE1' 
3

Вы можете использовать динамический SQL для выполнения ALTER только в случае необходимости, чтобы избежать таких ошибок, если таблица уже только для чтения:

DECLARE 
    vCheck VARCHAR2 (3); 
BEGIN 
    BEGIN 
     SELECT read_only 
     INTO vCheck 
     FROM user_tables 
     WHERE table_name = 'TABLE1'; 
    EXCEPTION 
     WHEN NO_DATA_FOUND 
     THEN 
     vCheck := 'YES'; -- Avoid ALTER in case of TABLE1 not existing 
    END; 

    -- 
    IF vCheck = 'NO' 
    THEN 
     EXECUTE IMMEDIATE 'ALTER TABLE TABLE1 READ ONLY'; 
    END IF; 
END;