我正在使用postgesql。
我已经创建了一个数据库和表。但是,在一张表中,我想添加一个约束,但是它不起作用。我想将列is_official
中的值仅设置为T或F。
ALTER TABLE countrylanguage
ALTER COLUMN is_official
ADD CONSTRAINT conchk
CHECK (is_official IN ('T','F'));
答案 0 :(得分:3)
不是在列上定义检查约束,而是在表上定义。因此,当您尝试定义检查约束时,alter column
部分无效:
ALTER TABLE countrylanguage
ADD CONSTRAINT conchk CHECK (is_official IN ('T','F'));
但是,最好将列is_official
定义为boolean
,而不是将text
(或varchar
)定义为具有true约束的检查约束boolean
列。