将时间的CAST或SUBSTR作为主键的一部分的DB2表?
我正在尝试创建一个表,它可以由不同的应用程序经常更新,但我只关心每小时的最后一个条目,而不管是什么更新了它。考虑到这一点,我认为使用小时(当前时间)将是主键的一部分(只是一部分,而不是全部)。这可以是以下任何内容(如果有效): 或 如果我将lastvalue创建为:lastvalue time not null,默认值为将时间的CAST或SUBSTR作为主键的一部分的DB2表?,db2,primary-key,Db2,Primary Key,我正在尝试创建一个表,它可以由不同的应用程序经常更新,但我只关心每小时的最后一个条目,而不管是什么更新了它。考虑到这一点,我认为使用小时(当前时间)将是主键的一部分(只是一部分,而不是全部)。这可以是以下任何内容(如果有效): 或 如果我将lastvalue创建为:lastvalue time not null,默认值为 create unique index foo_inx on foo (col1, col2, lastdate, hour(lastvalue)); 我希望这是一个相当有趣
create unique index foo_inx on foo (col1, col2, lastdate, hour(lastvalue));
我希望这是一个相当有趣的问题。:-)
- 编辑:ddl不工作。我已将lastdate添加到唯一索引中李>
十进制(2,0)
作为类型(以及一些适当的检查
约束),然后使用存储过程插入以根据需要导出值来合成它@然而,伦纳德有一个很好的观点;如果数据在表中存放超过24小时,你就完蛋了——一小时本身是无效的。日期/时间也得到。。。在全球范围内很奇怪——例如,有些时区具有非整数偏移。没有足够的信息,但我会从存储完整的时间戳开始,并使用视图来派生此信息。使用时间戳和视图过滤的有趣视角。一方面,这很简单,也很明显(这是件好事)。另一方面,我担心由于这些传感器每小时可能发射数千次,我担心的是储存垃圾。我想我将尝试存储日期和时间列,使用视图进行过滤,偶尔在下班时间使用“重复数据消除”过程进行清理。谢谢。
create unique index foo_inx on foo (col1, col2, lastdate, hour(lastvalue));