wol*_*lφi 6 sql oracle oracle11g oracle12c
如何在Oracle 11g中设计一个表,以便以后与Oracle 12c中新的"时间有效性"功能兼容?
Oracle 12c的联机文档指定了如何在SQL语言指南中定义时间有效性(http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_7002.htm#CJADHJHB)
ALTER TABLE my_table ADD (PERIOD FOR my_valid_time (my_valid_start, my_valid_end) );
Run Code Online (Sandbox Code Playgroud)
因此,可以使用11g中已有的旧的valid_from和valid_till列,并在12c中将它们加强到适当的时间段,对吧?
我继承了使用固定的魔法日期"因为始终"和"永远",例如数据库DATE '1900-01-01'和DATE '3999-12-31'.显然,12c使用了NULL.
那么,我们是否必须放弃使用固定的魔法日期并切换到NULL日期?
是的,您将能够更改 12c 中的表以启用时间有效性(请参阅文档的 ALTER TABLE 部分:http ://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_3001.htm# CJAEGCFI)
它的工作原理是将您的 where 子句转换为“<=”和“>”或“is null”子句,因此如果您不想,则无需更改固定日期。
Tom Kyte 今天刚刚在他的博客上发布了相关内容,并提供了一些出色的示例: http://tkyte.blogspot.com/2013/07/12c-flashforward-flashback-or-see-it-as.html