我的表有一个显示电话号码的列,我想添加一个约束,其中这个数字必须是+cod.country-cod.local-num.local
这样的特定格式。例如:'+54-351-4350114'
。
后来我想添加一个约束,其中num.local
必须至少有7位数。
我想你正在寻找一个Postgres CHECK
constraint:这样的约束确实接受了一个正则表达式,使用SIMILAR TO
运算符:
ALTER TABLE mytable ADD CONSTRAINT phone_number_check CHECK(
phone_number SIMILAR TO '\+\d+-\d+-\d{7,}'
)
正则表达式解释:
\+ the + sign
\d+ at least one digit
- the - sign
\d+ at least one digit
- the - sign
\d{7,} at least 7 digits
这将允许像'+54-351-1234567'
这样的值,例如拒绝'+54-351-123456'
。您可以使用Postgres Regular Expressions自由地将正则表达式调整为您的确切要求。