SQL 对单个列的多个约束

SQL Multiple constraints on a single column

我正在与 sql 服务器和 table 工作人员一起工作。
我需要添加一列“性别”并应用两个约束:检查和默认。

所以我需要检查他们的性别是 male/female 并且默认值应该是“待更新”

我的查询看起来像这样,但它不起作用:

ALTER TABLE Workers
ADD Gender VARCHAR(6) CHECK (Gender IN ('Male', 'Female'))
           DEFAULT 'To be updated'

您没有说“不起作用”是什么意思,但是 varchar(6) 不包含 'To be updated' 的 13 个字符,您需要将默认值包含在允许的范围内价值。明确命名约束也是一个好主意,这样您将来可以轻松引用它们。

alter table Workers add 
  Gender varchar(13) 
    constraint GenderCheck check (Gender in ('Male', 'Female','To be updated') ) 
    constraint GenderDefault default ('To be updated');

Working Demo

另请注意 - 添加列时指定 not null 会将默认值应用于现有行。