无法在PostgreSQL中添加检查约束

时间:2019-01-28 11:48:04

标签: postgresql

我正在使用postgesql。

我已经创建了一个数据库和表。但是,在一张表中,我想添加一个约束,但是它不起作用。我想将列is_official中的值仅设置为T或F。

ALTER TABLE countrylanguage
ALTER COLUMN is_official 
ADD CONSTRAINT conchk 
CHECK (is_official IN ('T','F'));

1 个答案:

答案 0 :(得分:3)

不是在列上定义检查约束,而是在表上定义。因此,当您尝试定义检查约束时,alter column部分无效:

ALTER TABLE countrylanguage
  ADD CONSTRAINT conchk CHECK (is_official IN ('T','F'));

但是,最好将列is_official定义为boolean,而不是将text(或varchar)定义为具有true约束的检查约束boolean列。