首页 > 数据库 > Oracle > Oracle11g新特性之只读表
在Oracle 11g之前的版本中,若想对表设置只读,可以通过赋予SELECT对象权限给指定用户,但是表的拥有者仍然拥有读写权限。而Oracle 11g 允许通过ALTER TABLE 命令将表标记为只读(read-only)。只读表跟普通的表没有区别,只是不允许任何事务对其执行任何 DML(Insert, Update, Delete) 操作。
我们在Oracle11g(11.2.0.3)进行测试。
点击(此处)折叠或打开
我们创建一个测试表,命名为hoegh;然后,插入两条测试数据。
点击(此处)折叠或打开
我们通过alter table ... read only;语句来实现只读表;而且,我们可以通过数据字典视图 (ALL_TABLES,DBA_TABLES,USER_TABLES,TABS)中的 READ_ONLY 列查询表的只读属性,如下所示:
点击(此处)折叠或打开
只读表不允许任何事务对其执行任何 DML(Insert, Update, Delete) 操作,否则系统会报ORA-12081错误,提示操作不被允许。
点击(此处)折叠或打开
只读表除了不能执行所有DML语句操作外,部分DDL语句也不能执行,比如TRUNCATE,否则系统同样会报ORA-12081错误,提示操作不被允许。
点击(此处)折叠或打开
针对只读表的DROP操作,是被允许的。
点击(此处)折叠或打开
我们通过alter table ... read write;语句来实现将只读表设为普通读写表。参看下面SQL语句:
点击(此处)折叠或打开
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30162081/viewspace-1761309/ ,如需转载,请注明出处,否则将追究法律责任。