【发布时间】:2019-11-22 17:20:06
【问题描述】:
当使用node-postgres 查询 Postgres 数据库时,成功的查询将返回具有oid 属性的pg.Result 类型。
查询集合返回函数时,oid 为null。
从函数中选择时,有没有办法获得返回类型的oid?
【问题讨论】:
当使用node-postgres 查询 Postgres 数据库时,成功的查询将返回具有oid 属性的pg.Result 类型。
查询集合返回函数时,oid 为null。
从函数中选择时,有没有办法获得返回类型的oid?
【问题讨论】:
Result.oid 属性与返回类型无关。
在 Postgres 12 之前,您可以使用 CREATE TABLE ... WITH OIDS 在表中包含自动分配的 oid 列。
在将单行INSERT 放入表WITH OIDS 的特殊情况下,服务器的CommandComplete response 包含新行的oid。对于所有其他 INSERTs,oid 为零,对于所有其他命令,响应不包含 oid。
node-postgres source 表明Result.oid 属性派生自此响应。对于SELECT 响应,永远不会分配oid,因此无论您要查询什么,null 都会被分配。这个值(以及一般的 OID 列)的有限用途可能解释了为什么 oid 属性是 undocumented。
返回类型与结果的列相关联,而不是与整个结果相关联。您可以使用例如:
获取列的类型 OIDresult.fields[0].dataTypeId
【讨论】: