2017-01-27 4 views
2

私は、ORACLEテーブルを読み取り専用にしたいと考えています。これは、使用して可能である:テーブルが読み取り専用かどうかをチェックする方法は?

ALTER TABLE table1 READ ONLY;

しかし、TABLE1がすでに、テーブルを変更すると、エラーの原因となっている、読み取り専用されている場合。

したがって、table1が読み取り専用かどうかを確認する方法があります。それがない場合は、 を読み取り専用にする方法があります。

答えて

4

チェックuser_tables:あなたはテーブルが既に読み取り専用の場合は、エラーを回避すること、必要な場合にのみALTERを実行するために、動的SQLを使用することができ

select read_only 
from user_tables 
where table_name = 'TABLE1' 
3

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; 
関連する問題