指定 SQL table 数据类型的选择 - sqlite

Specifying choices for SQL table data types - sqlite

我正在努力设置一个 table,其中一个要求是列应该是 "gender" 并且它接受的数据应该是 "M" 或 "F"。我如何指定这个条件?

CREATE TABLE bears (
  id INTEGER PRIMARY KEY,
  name TEXT,
  age INTEGER,
  gender ("M" or "F")
)

一个简单的方法是 check 约束:

create table t as (
    . . .,
    gender char(1) not null,
    constraint chk_t_gender check (gender in ('M', 'F'))
);

请注意,SQLite 会忽略字符类型上的 (1),但 check 约束会强制执行长度。这样写,代码遵循标准SQL.