aw *_*rud 3 sql oracle plsql sequences
我有一个多线程进程,它将多个记录插入到一个表中.插入在存储过程中执行,生成的序列是INTO变量,该变量稍后在内部使用INSERT.
鉴于我没有在mysequence.nextval内部进行INSERT,它让我认为两个并发进程可以在一个顺序中获取序列,然后以相反的顺序进行插入.如果是这种情况,那么序列号将不会反映插入的真实顺序.
我还在每个插入sysdate的DATE列中记录,但我注意到两个记录的日期经常匹配,我需要按序列号排序以打破平局.但鉴于上一个问题,这似乎并不能保证实际的插入顺序.
如何确定插入数据库的绝对顺序?
DATE数据类型仅转到秒,而TIMESTAMP转到毫秒.那会解决这个问题吗?
根据Oracle的文档:
TIMESTAMP:日期的年,月和日值,以及小时,分钟和秒的时间值,其中fractional_seconds_precision是SECOND日期时间字段的小数部分中的位数.fractional_seconds_precision的可接受值为0到9.默认值为6.默认格式由NLS_DATE_FORMAT参数显式确定,或由NLS_TERRITORY参数隐式确定.尺寸从7到11个字节不等,具体取决于精度.此数据类型包含日期时间字段YEAR,MONTH,DAY,HOUR,MINUTE和SECOND.它包含小数秒,但没有时区.
而date不是:
日期:有效日期范围从公元前4712年1月1日到公元9999年12月31日.默认格式是由NLS_DATE_FORMAT参数或隐式由NLS_TERRITORY参数明确确定.大小固定为7个字节.此数据类型包含日期时间字段年,月,日,小时,分钟和秒.它没有小数秒或时区.
当然,话虽如此,我不确定在编写记录时为何重要,但这是一种可以解决问题的方法.