如何在Oracle 12c中使用时间有效性?

时间:2013-06-27 13:12:39

标签: sql oracle oracle11g oracle12c

如何在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日期?

1 个答案:

答案 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