我测试了以下情况。
CHECK应用于INTEGER列。它不起作用。
sqlite> CREATE TABLE log (_id INTEGER PRIMARY KEY, timestamp INTEGER NOT NULL, message TEXT NOT NULL, status INTEGER NOT NULL CHECK (status IN (1, 0));
Error: near ";": syntax error
CHECK应用于TEXT列。它有效。
sqlite> CREATE TABLE log (_id INTEGER PRIMARY KEY, timestamp INTEGER NOT NULL, message TEXT NOT NULL CHECK (message IN ('Bad', 'OK')), status INTEGER NOT NULL);
sqlite> insert into log values (3, 11111, 'OK', 1);
sqlite> select * from log;
3|11111|OK|1
sqlite> insert into log values (3, 11111, 'dsvsdvOK', 1);
Error: constraint failed
如果我正确理解文档,这两种情况都应该有效。
答案 0 :(得分:2)
第一个CREATE TABLE语句有三个开头但只有两个右括号。