所以我对PostgreSQL定时函数有这个有趣的问题。PostgreSQL:CURRENT_TIMESTAMP和CLOCK_TIMESTAMP解决方案:Windows与Linux?
这是情况。我们有一个预生产服务器(Linux),我们拥有我们的开发应用程序。我还会在该数据库(Windows)的本地副本上做一些工作,以防服务器上出现一些更重要的工作。我最近遇到了一个问题,我开始在本地数据库副本上的日志记录表上获取主键违例。我认为这是不可能的,因为我使用CLOCK_TIMESTAMP(当前系统时间)作为主键。另外,我在pre-prod服务器上进行了测试,并且它工作正常。所以我做了一些调查。我最终发现,如果我在服务器上运行'SELECT CLOCK_TIMESTAMP()',它会将时间返回到微秒。如果我在本地主机上运行它,它只会下降到毫秒。所以如果在计时器到达下一毫秒之前发生多次更新,就会出现这个问题,这对于我们的一些进程是绝对有可能的。
所以我的问题是这样的。为什么会发生这种情况,我该如何解决?这是我一直无法找到的一些模糊的设置吗?或者在Windows和Linux的定时器分辨率上有所不同?
编辑:同样的事情发生在CURRENT_TIMESTAMP,NOW()和所有其他时间戳返回的内置函数中。
感谢
当你键入'select now():: timestamp(6);'时,在Windows上会发生什么? –
@Denis 'select now():: timestamp(6);'returns'2013-11-04 15:43:08.896' –