PostgreSQL:为个人号码创建一个CHECK CONSTRAINT

时间:2017-02-14 14:58:53

标签: postgresql

我的学校有一项创建数据库的任务。在这个DB中,我必须创建一个名为person的表,该表具有一些属性(country,personalnumber,name等)。

创建数据库时,我必须确保个人号码应具有以下格式:XXXXXXXX-XXXX其中X是0到9之间的数字。

我试过这样做:

ALTER TABLE person 
   ADD CONSTRAINT persondigits CHECK
      (personalNumber LIKE '________-____' ) 
      AND personalnumber IN ('0','1','2','3','4','5','6','7','8','9','-')

其中personalnumber类型为varchar,但这不起作用。
我尝试了很多其他CHECK但仍然没有工作。

2 个答案:

答案 0 :(得分:0)

~约束中使用display connection CPU and RAM usageCHECK运算符SIMILAR TO expression

答案 1 :(得分:0)

在PostgreSQL中,您可以使用SIMILAR TO这样的模式:

CREATE TABLE person (
personal_number CHAR(13) CHECK (personal_number SIMILAR TO '[0-9]{8}-[0-9]{4}')
);