是否有使用时间戳作为主键的策略?

har*_*rsh 5 postgresql primary-key timestamp

大多数情况下,我们使用整数序列作为主键来保持表中行的唯一性。为此,我们不能使用时间戳而不是整数吗?该策略是否有任何缺陷,因为我认为机器不能同时“同时”做两件事......对吗?

我正在处理一个在键中包含大量休眠序列的数据库,所以我想使用时间戳作为解决方案。在实践中是否有任何类似的方法可以与任何数据库一起使用?要是知道就好了。

编辑:我要问的是,由于对我们(人类)来说,没有两个时刻是相同的,这对计算机也适用吗?我知道计算机通过某些晶体的振动来跟踪时间(不确定它可以测量多小的时间)。

在数据库中,我有一些表,除了时间(审计跟踪)外没有主键适用,并且指定一个序列(hibernate_sequence)将数字增加到极高的程度,这使得使用其他表不方便,因为它会影响所有表序列作为主键。

因此,如果 PostgreSQL 可以保证不会在同一时间戳上发生两次插入/更新操作,那么我可以将其用作主键,如果不能,则显然我不能使用此解决方案。

基本问题是:PostgreSQL的规定,任何两个记录将被插入/同时更新任何保证(通过某些方法或配置)“时间”

谢谢

Eva*_*oll 1

这不是一个好主意。

PostgreSQL 提供了许多与当前时间戳相关的函数,

  • transaction_timestamp()
  • 语句_时间戳()
  • 时钟时间戳()
  • 一天中的时间()
  • 现在()

问题是这些都不是插入时间。您有多个后端。每个后端可以处理一笔交易。这些事务可以同时启动,或者它们可以同时调用这些函数(它们将位于不同的线程/进程上)。