devxlogo

Making Tables Read-only in Oracle

Making Tables Read-only in Oracle

In Oracle, you can only control read/write capability for an entire tablespace, not for a single table within a tablespace. So, if you want all the tables in a tablespace to be read-only, use the following command:

ALTER TABLESPACE  READ ONLY; 

To reverse the change and set all the tables in the tablespace back to read-write mode, use this code:

ALTER TABLESPACE  READ WRITE; 

Despite that limitation, you can simulate a read-only table by simply preventing all table modifications using a trigger. To do that, create a trigger as follows.

SQL> create or replace trigger emp_sal_read_only2 before insert or update or delete3 on emp_sal_tbl4 begin5 raise_application_error (-20001, 'Table EMP_SAL_TBL is read only,    You cannot make changes to the data.');6 end;7 /Trigger created.

Here’s a test command that tries to alter the data, and the resulting output:

SQL> DELETE FROM EMP_SAL_TBL;DELETE FROM EMP_SAL_TBL*ERROR at line 1:ORA-20001: Table EMP_SAL_TBL is read only, You cannot make changes to the data.ORA-06512: at "SRIDHAR.EMP_SAL_READ_ONLY", line 2ORA-04088: error during execution of trigger 'SRIDHAR.EMP_SAL_READ_ONLY'
See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist