如何在 PostgreSQL 中定义类型昵称?

Jam*_*ter 1 sql postgresql

我是 SQL 新手,所以如果这个问题很愚蠢,请原谅。

我正在谷歌搜索“如何在 postgresql 中创建类型别名?” 答案似乎都进入了表格类型,以及对于我想做的事情来说太过分的东西。

我需要 PostgreSQL 的版本:

#define t_my_int int
Run Code Online (Sandbox Code Playgroud)

这样做的动机是我的许多表具有相同的字段名称,例如 my_field,并且它们都是 VARCHAR(X) 类型,其中 X 是随机数。我想让我的所有 my_field 都相同。例如,所有 VARCHAR(100)。

我怎么做?

小智 5

域是一种解决方案

create domain name_type as varchar(100);
Run Code Online (Sandbox Code Playgroud)

然而,使用这样的域有一个严重的限制:一旦定义了它,就不能再更改数据类型。所以你不能增加最大长度。

避免这种情况的一种方法是使用无界类型,并使用检查约束来验证长度

create domain name_type as text
   constraint check_name_length 
   check (length(value) <= 100);
  
Run Code Online (Sandbox Code Playgroud)

可以删除检查约束并使用不同的条件重新创建。