我在Postgres中创建了一个类型,例如MYTYPE(X),并创建了一个类似于以下的表:
create table t0(c0 mytype(80));
然后我创建一个名为MY_ENGINEPT的函数(MYTYPE)。此函数获取MYTYPE值并对该值进行3DES加密。在MY_ENGINEPT函数中,是否有某种方法可以让我获取 * X * 的值(typmod)的列,以便我可以检查该值是否福尔斯在正确的范围内(即80 -开销)-我需要这样做,因为在加密过程中有额外的开销,这将导致加密数据大于实际输入值。
**注意:**MYTYPE不能是一个专门用于加密数据的特殊类型,它必须是一个可以用于其他目的的泛型类型。所以,我不能简单地解释特殊类型中的额外开销,它必须在函数中或其他地方完成,而不是专门与类型绑定。
1条答案
按热度按时间fxnxkyjh1#
通常,类型修饰符不存储在
Datum
中。它被传递给类型输入函数,以便它可以使用它来解析和验证字符串表示。所以你不能在函数中获得它,除非你以某种方式将它包含在mytype
的内部表示中。在PostgreSQL中,类型修饰符被持久化的唯一地方是表列定义。