web-dev-qa-db-ja.com

SQLiteにデフォルト値を追加する方法は?

この方法でステータス列を追加するためにテーブルを修正しました

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

ただし、SQLiteは、作成された新しいITEMの列にNを追加しないようです。構文が間違っているか、SQLiteとそのデフォルトのサポートに問題がありますか。

SQLite 3.6.22を使用しています

34
Azlam

は、私にはよく見えますよ。 ここにドキュメントがあります

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"
43
databyte