如何在Oracle 11g中设计一个表,以便以后与Oracle 12c中新的“Temporal validity”功能兼容?
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
日期?
答案 0 :(得分:3)
是的,您可以在12c中更改表以启用时间有效性(请参阅文档的ALTER TABLE部分:http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_3001.htm#CJAEGCFI)
它的工作原理是将您的where子句转换为“< =”和“>或null”子句,因此如果您不想更改固定日期,则无需更改。
Tom Kyte今天在他的博客上发布了关于此事的一些例子: http://tkyte.blogspot.com/2013/07/12c-flashforward-flashback-or-see-it-as.html