6

如何在 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'. 显然,12cNULL改为使用。

那么,我们是否必须放弃使用固定的魔术日期并改用NULL日期?

4

1 回答 1

3

是的,您将能够在 12c 中更改表以启用临时有效性(请参阅文档的 ALTER TABLE 部分:http: //docs.oracle.com/cd/E16655_01/server.121/e17209/statements_3001.htm# CJAEGCFI )

它通过将 where 子句转换为“<=" and "> or is null”子句来工作,因此如果您不想更改固定日期,则无需更改。

Tom Kyte 今天刚刚在他的博客上发布了关于此的一些出色示例: http ://tkyte.blogspot.com/2013/07/12c-flashforward-flashback-or-see-it-as.html

于 2013-07-03T19:25:49.570 回答