如何在SQLite中添加默认值?

50

我的表格被修改了,增加了一个状态列,修改方式如下

ALTER TABLE ITEM ADD COLUMN STATUS VARCHAR DEFAULT 'N';

然而,SQLite 对于任何新创建的 ITEM 似乎不会将 N 添加到列中。是语法有误还是 SQLite 在默认值支持方面存在问题?

我正在使用 SQLite 3.6.22。


4
你使用的是哪个版本的sqlite?我使用的是3.6.16,你提供的SQL代码对我来说完美运行。 - Jansen Price
2
也许这是您正在使用的前端与操作数据库的问题。您尝试过使用非功能性的“插入”通过手动方式执行吗(在sqlite cli客户端中)? - Messa
2
看起来实际上是有效的,问题出在前端使用上对数据库进行操作。 - Azlam
1个回答

63

我觉得看起来很不错。 这里有文档

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之前,表结构是否存在。 如果在事务中,请在插入之前确保提交事务

$ sqlite3 test.db ".dump"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接