首页 > 解决方案 > 向电话号码列添加 2 个约束

问题描述

我需要向现有表添加一个约束,以便电话号码只能是 10 位手机号码或 8 位固定电话号码(没有空格或区号)。

这是我尝试过的代码:

ALTER TABLE people

ADD CONSTRAINT digit_phoneno_8_10

CHECK (phoneno ~ '^[0-9]{8,10}$');

这允许 9 位数的电话号码,我想排除它。

标签: sqlpostgresqlconstraintspsql

解决方案


要精确n数字或精确m数字,您需要使用交替|运算符:

ALTER TABLE people

ADD CONSTRAINT digit_phoneno_8_10

CHECK (phoneno ~ '^(\d{8}|\d{10})$');

推荐阅读