如何将特定字段设置为非null?

时间:2019-03-28 21:32:53

标签: sql postgresql pgadmin-4

我有一个表,其中两列分别显示国家和护照,均为varchar类型,也有其他列,但与问题无关,我想添加一个约束,其中特定国家/地区可能没有护照。例如,只有义大利国家可以拥有护照,或者可以将其设置为空,而其他国家必须具有护照。

我尝试了以下代码:

alter table profesor alter column passport set not null where country != 'Italy'

会删除下一个错误:

ERROR: syntax error at or near "where" 
LINE 1: ...able profesor alter column passport set not null where country... 
                                                             ^ 
SQL state: 42601 
Character: 58

1 个答案:

答案 0 :(得分:0)

我认为您需要一个check约束,而不是not null约束:

alter table profesor
    add constraint chk_profesor_passport
        check (passport is not null or country = 'Italy');