我有一个表被修改为以这种方式添加状态列
ALTER TABLE ITEM ADD COLUMN STATUS VARCHAR DEFAULT 'N';
但是,对于任何创建的新ITEM,SQLite似乎都没有为该列添加N. 语法是错误的还是SQLite存在任何问题及其对默认值的支持.
我正在使用SQLite 3.6.22
在我看来很好. 这是Docs.
sqlite> create table t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE); sqlite> .table t1 sqlite> .dump PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE); COMMIT; sqlite> alter table t1 add column status varchar default 'N'; sqlite> .dump PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE, status varchar default 'N'); COMMIT; sqlite> insert into t1 (name) values ("test"); sqlite> select * from t1; 1|test||N
在调用ALTER TABLE之后但在INSERT之前,转储您的模式并验证您的表结构是否存在.如果它在事务中,请确保在插入之前COMMIT事务.
$ sqlite3 test.db ".dump"