小编Bas*_*que的帖子

Postgres 中 UUID 列的默认值

Postgres 9.x 中,对于类型为 的列UUID,如何指定要自动生成的 UUID 作为任何行插入的默认值?

postgresql default-value uuid

96
推荐指数
3
解决办法
15万
查看次数

pgAdmin 4 版本 3 无法再次打开

我刚刚为macOS Sierra安装了pgAdmin 4版本 3.0.0 ,替换了与在同一台 Mac 上本地运行的Postgres 10.3捆绑在一起的pgAdmin

我打开了pgAdmin 4.app应用程序图标,这导致Safari 浏览器出现在前面,并带有一个显示通常 pgAdmin 用户界面的选项卡。好的。

我在 Safari 中关闭了那个标签。现在,当我打开pgAdmin 4.app图标(双击或选择File> Open)时,没有任何反应。

pgAdmin 是否应该在浏览器窗口而不是应用程序自己的窗口中启动?

? 如何再次重新打开 pgAdmin?

pgadmin mac-os-x pgadmin-4

37
推荐指数
2
解决办法
4万
查看次数

Postgres中旧记录的自动老化(删除)

Postgres 是否有任何功能来支持老化的旧记录?

我想使用 Postgres 进行日志记录,作为一种队列,其中超过两周的记录(日志事件)会被自动删除。

postgresql delete queue

20
推荐指数
1
解决办法
3万
查看次数

PostgreSQL:生成的列

PostgreSQL 是否支持生成的列?也称为虚拟列。我不是在谈论IDENTITY

我找不到有关此卓越功能的任何信息,但我知道它在 SQL Server 以及最新版本的 MariaDB 和 MySQL 中可用。

SQL:2003标准中提到了该功能,并且在 2006 年左右在 PostgreSQL 论坛上进行了一些讨论,但我找不到关于此事的任何实质性内容。

有一些关于 SO 的讨论,但它现在已经很老了,所以它很可能已经过时了。

postgresql computed-column

19
推荐指数
3
解决办法
1万
查看次数

为什么 Postgres 中的时区在 0001 年与 UTC 有如此疯狂的偏移?

在 Postgres 9.5 中,我很惊讶地看到在尝试 year 0001(没有 year zero 0000)时看到的结果。

的偏移量-07:52:58

一些示例代码。请注意,我混合使用了TIMESTAMP WITH TIME ZONETIMESTAMP WITHOUT TIME ZONE,所以请仔细阅读。

SET TIME ZONE 'America/Los_Angeles' ;

SELECT (TIMESTAMP WITH TIME ZONE '2015-01-01 00:00:00.0', 
        TIMESTAMP WITH TIME ZONE '0001-01-01 00:00:00.0Z', 
        TIMESTAMP WITHOUT TIME ZONE '0001-01-01 00:00:00.0Z') ;

("2015-01-01 00:00:00-08","0001-12-31 16:07:02-07:52:58 BC","0001-01-01 00:00:00")
Run Code Online (Sandbox Code Playgroud)

我对第二个值感到惊讶:0001-12-31 16:07:02-07:52:58 BC. 我知道我们必须America/Los_Angeles在 UTC后八小时后退八小时,偏移量为-08:00. 但不是-08:00偏移量是-07:52:58. 为什么?

UTC下没问题

在 UTC 下输入数据时没有这样的问题。

SET TIME ZONE 'UTC' …
Run Code Online (Sandbox Code Playgroud)

postgresql timestamp timezone postgresql-9.5

16
推荐指数
1
解决办法
2284
查看次数

Postgres 中的“转换表”是什么?

描述Postgres 10 新功能的页面提到了“触发器的转换表”。

触发器的转换表

此功能AFTER STATEMENT通过适当地向查询公开旧行和新行,使触发器既实用又高效。在此功能之前,AFTER STATEMENT触发器无法直接访问这些,并且变通方法是拜占庭式的并且性能很差。现在可以将许多触发器逻辑编写为AFTER STATEMENT,从而避免需要在 FOR EACH ROW 触发器所需的每一行进行昂贵的上下文切换。

什么是过渡表?

postgresql trigger table postgresql-10

15
推荐指数
2
解决办法
3774
查看次数

Postgres 中“ctid”系统列的数据类型是什么?

Postgres 系统列记录在第 5 章。数据定义 > 5.4。系统列

该页面提到oid值“是 32 位数量”。该页面对交易标识符也有同样的说法。所以我假设这意味着oid, tableoid, xmin, cmin, xmax, 和cmax都是 32 位整数。

但这离开了ctid系统列。

行版本在其表中的物理位置。请注意,尽管 ctid 可用于非常快速地定位行版本,但如果行的 ctid 被 VACUUM FULL 更新或移动,则该行的 ctid 将更改。因此 ctid 作为长期行标识符是无用的。OID,或者更好的是用户定义的序列号,应该用于标识逻辑行。

? ctid列的数据类型是什么?

具体来说,我对 Postgres 10.3 版本感兴趣,但如果它在过去的版本中发生了变化,那会很高兴知道。

postgresql uniqueidentifier datatypes postgresql-10

14
推荐指数
1
解决办法
1万
查看次数

Postgres 是否在 MS SQL Server 中提供了像“NEWSEQUENTIALID”这样的功能来使 UUID 作为主键更有效

Microsoft SQL Server 提供了NEWID生成新 GUID(UUID的 Microsoft 版本)值的命令,该值可用作主键值(在其uniqueidentifier数据类型中)。这些本质上不是顺序的,因此更新索引可能效率低下。

或者,MS SQL Server 提供该NEWSEQUENTIALID命令。引用他们的文档:

创建一个 GUID,该 GUID 大于自 Windows 启动以来此函数在指定计算机上先前生成的任何 GUID。重新启动 Windows 后,GUID 可以从较低的范围再次启动,但仍然是全局唯一的。当 GUID 列用作行标识符时,使用 NEWSEQUENTIALID 比使用 NEWID 函数更快。这是因为 NEWID 函数会导致随机活动并使用较少的缓存数据页。使用 NEWSEQUENTIALID 还有助于完全填充数据和索引页。

有没有办法在 Postgres 中获得更有效索引的 UUID?

postgresql index primary-key uuid

13
推荐指数
1
解决办法
4506
查看次数

如何使用 pgAdmin 3 编辑`postgresql.conf`?

如何使用 pgAdmin 应用程序编辑“postgresql.conf”文件?

在 Postgres 9.3.x 上使用 pgAdmin 1.18.1,当我选择File>Open postgresql.conf,会出现一个文件选择器对话框。而且,是的,我在 pgAdmin 中以超级用户“postgres”的身份连接。

我知道我已经在旧版本的 Postgres 中做到了这一点。

postgresql pgadmin

10
推荐指数
1
解决办法
3万
查看次数

当无法立即锁定所选行时,PostgreSQL`FOR UPDATE NOWAIT` 究竟返回了什么错误?

所述的PostgreSQL 9.4文档指出添加NOWAIT选项将SELECT FOR UPDATE当行不能被锁定时产生一个错误的装置:

要防止操作等待其他事务提交,请使用 NOWAIT 选项。使用 NOWAIT,如果无法立即锁定所选行,该语句将报告错误,而不是等待。

那究竟是什么错误?

由于这是一个可接受的条件,我希望我的 Java 代码检查此类预期错误,然后解决它。

postgresql select locking

9
推荐指数
1
解决办法
6790
查看次数