首页 > 解决方案 > 在 PostgreSQL 中创建带有正则表达式模式的自定义类型

问题描述

我有一个特殊类型,它有C8 个整数,例如C21032011. 我想强制执行这种复合类型 - 一个大写 C 和以下 8 个整数。

我怎样才能实现这个约束?

标签: regexpostgresqltypes

解决方案


您可以创建带有检查约束的域。

create domain my_number_type as text
   constraint check_valid_number check (value is not null and value ~ '^C[0-9]{8}$');

然后在要强制执行此类限制的任何地方使用此域:

create table some_table
(
  ...,
  some_nr my_number_type,
  ...
);

推荐阅读