如何在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) );
因此,可以使用已经在11g中使用的旧的valid_from和valid_till列,并在12c中使用它们直到适当的时期,对吗?
我继承了使用固定的魔术日期作为“自始至终”和“永远”的数据库,例如
DATE '1900-01-01'
和DATE '3999-12-31'
。显然,12c使用NULL
代替。那么,我们是否必须放弃使用固定的魔术日期并切换为
NULL
日期? 最佳答案
是的,您将能够更改12c中的表以启用时间有效性(请参阅docs:http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_3001.htm#CJAEGCFI的ALTER TABLE部分)
它通过将where子句转换为“或为null”子句而起作用,因此,如果您不需要,则无需更改固定日期。
汤姆·凯特(Tom Kyte)刚刚在他的博客上发布了有关此的内容,并列举了一些出色的例子:
http://tkyte.blogspot.com/2013/07/12c-flashforward-flashback-or-see-it-as.html