当我从cmd(Windows)运行sqlite3 foo.db
并输入这些命令时(假设TABLE' test'不存在):
sqlite> CREATE TABLE test (id integer PRIMARY KEY, name char(1));
sqlite> INSERT INTO test (name) VALUES ('aaaaaa');
没有错误。要验证,
//Input
sqlite> SELECT * FROM test;
//Output
1|aaaaaa
再次,验证,
sqlite> .schema test
CREATE TABLE test (id integer PRIMARY KEY, name char(1)); //output
并且架构没有改变。
是否存在问题,尤其是name char(1)
部分?为了记录,我使用MinGW64和
--host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw // where /mingw is included in my PATH
提前致谢。
答案 0 :(得分:2)
作为there is no types in SQLite,这个问题毫无意义。所有TEXT值都相同,并存储为“无限制”(最多为SQLITE_MAX_LENGTH)长度字符串。
答案 1 :(得分:0)
您看到的是WAD:"按设计工作"。
SQLite不会强制执行char(n)或varchar(n)列的长度,因为它在CREATE TABLE语句中声明。但是您可以使用CHECK约束强制执行长度限制。
sqlite> create table test (
...> id integer primary key,
...> name char(1),
...> check (length(name)<=1)
...> );
sqlite> INSERT INTO test (name) VALUES ('aaaaaa');
Error: CHECK constraint failed: test