首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql: UDT中的type_modifier

Postgresql: UDT中的type_modifier
EN

Database Administration用户
提问于 2013-02-26 12:42:37
回答 2查看 529关注 0票数 1

在postgresql中创建UDT手册中,我找到了以下语句:

PostgreSQL允许用户定义的类型接受一个或多个简单常量或标识符作为修饰符。但是,该信息必须能够打包到单个非负整数值中,以便存储在系统目录中。

那么,真的没有办法,存储更多的信息,将适合于一个非负整数?例如,我希望能够存储一个函数的名称,该函数在插入数据时应该作为缺省值被调用(因为可能有多个函数可以处理该数据)。那是不可能的?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2013-02-26 13:57:17

类型的系统目录,pg_catalog.pg_type有以下列:

代码语言:javascript
复制
typtypmod integer not null

正如您通过运行\d pg_type看到的。

没有办法存储一些不能容纳到整数中的东西,因为目录就是这样存储类型类型的。

非负要求似乎源于使用-1作为保留值.

您描述的特定问题听起来更适合添加列触发器。听起来你真正想要的是DOMAINS和在域上添加触发器的能力--但不幸的是,目前还不支持域上的触发器。

票数 3
EN

Database Administration用户

发布于 2013-02-28 11:54:35

经过大量的研究,我发现了进一步的可能性:

虽然不可能在pg_type中存储更多的信息,因为它是整数类型的,但是可以选择在表的属性中存储信息。

但是,为了达到这个目的,您必须更改postgresql的源代码:文件reloptions.c允许添加键值格式key=value可接受的字段。使用SQL SET命令(例如ALTER TABLE tbl ALTER COLUMN col SET (k1 = v1))可以设置键值。然后,这些信息存储在attoptions字段中的pg_attribute中(而不是pg_type中)。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/35452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档