我有一个表,修改为以这种方式添加状态列
ALTER TABLE ITEM ADD COLUMN STATUS VARCHAR DEFAULT 'N';
但是sqlite似乎没有添加N为任何新的ITEM创建的列。是语法错误或有与sqlite的任何问题及其对默认值的支持。
我使用sqlite 3.6.22
看起来对我好。
Here are the 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,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,created DATE,status varchar default 'N'); COMMIT; sqlite> insert into t1 (name) values ("test"); sqlite> select * from t1; 1|test||N
转储模式并在调用ALTER TABLE之后但在INSERT之前验证您的表结构是否存在。如果它在一个事务中,请确保在插入之前提交事务。
$ sqlite3 test.db ".dump"