SQLite的。列约束CHECK不适用于INTEGER列

时间:2014-06-26 10:37:02

标签: sqlite constraints

我测试了以下情况。

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

如果我正确理解文档,这两种情况都应该有效。

column-constraint

expr

1 个答案:

答案 0 :(得分:2)

第一个CREATE TABLE语句有三个开头但只有两个右括号。