首页 > 解决方案 > 无法在 postgresql 中添加检查约束

问题描述

我正在使用postgesql。

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

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

标签: postgresql

解决方案


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

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

但是,最好将列定义is_officialboolean而不是带有检查约束的text(or varchar) 来模拟真实boolean列。


推荐阅读