暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 12c新特性 row archive

原创 王跃辉 2022-10-17
826


当我们不需要表中的某些行时,需要发布delete语句来删除。

但是有时候并不是想在物理上真正的删除这些数据,在传统的表设计中,我们一般都加多一个栏位来表示逻辑删除。

比如is_delete。当应用程序在处理时,把is_delete也加入到where条件中来表示行是不是真正的删除了.

在12C中,引入了一个新特性叫作row archive,可以让数据库自动来做这些操作.


开启行归档:alter table t1 row archival

在允许row archival后,系统会自动会表增加栏位ORA_ARCHIVE_STATE,用来表示数据可用性情况。

如果我们用select * from t1这种方式,这个栏位是不会被显示的,只有显式指定栏位,才会在结果集中显示栏位.

查看行归档:

SQL> select column_name from user_tab_cols where table_name='T1'

SQL> select a,b,ora_archive_state from t1; 查询ora_archive_state的值是0


进行逻辑删除:

SQL>update t1 set ora_archive_state=1 where a=1;

SQL>commit;

SQL>select * from t1;

此时a=1这行就看不到了


开启全部可视:

SQL> alter session set row archival visibility=ALL;

SQL>select * from t1; (又可以都看到了)


关闭全可视

SQL> alter session set row archival visibility=active;

SQL>select * from t1; (a=1这行又看不到了)

SQL> select a,b,ora_archive_state from t1;

关闭行归档:

SQL> alter table t1 no row archival;

最后修改时间:2022-10-18 10:34:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论