如何在 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 中更改表以启用时间有效性(请参阅文档的 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
关于sql - 如何在 Oracle 12c 中使用时间有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17344158/