小编VH-*_*NZZ的帖子

PostgreSQL:将行转换为类型

我读过:使用复合类型创建新表

我有一个名为 的表locations,例如用 lat 表示对象。和长。坐标。

在另一个表中,我声明了一个类型的列locations(只是为了好玩,而不是试图变得聪明),即

CREATE TABLE XXX (..., some_column locations, ...);
Run Code Online (Sandbox Code Playgroud)

现在我在问自己这意味着什么,是否可以locations在其中存储一个对象。

这就是我试图做的:

SELECT pg_typeof(ROW(x)) FROM locations x LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

返回record. 我尝试将其转换为locations,即

SELECT ROW(x)::locations FROM locations X LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

这产生

ERROR:  cannot cast type record to locations
Run Code Online (Sandbox Code Playgroud)

接下来我尝试type_location根据locations表的列定义一个复合类型,并基于它创建一个类型化表( CREATE TABLE ... OF ...)。我仍然无法做到ROW(x)::locations

最终,我试图将一个值存储到XXX类型locations(或type_location)表中,但我不明白我的推理哪一部分是错误的。

PS:我并不是要使用这种结构来创建一个健全的数据库设计,而实际上只是在玩弄 PostgreSQL 及其类型系统。

postgresql datatypes composite-types

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

标签 统计

composite-types ×1

datatypes ×1

postgresql ×1