Как добавить значение по умолчанию в SQLite?

Мне изменили таблицу для добавления столбца состояния к нему этим способом

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

Однако SQLite, кажется, не добавляет N к столбцу ни для какого нового созданного ОБЪЕКТА. Синтаксис неправильно или там любая проблема с SQLite и его поддержкой значений по умолчанию.

Я использую SQLite 3.6.22

35
задан Dave Newton 6 November 2011 в 19:44
поделиться

1 ответ

По-моему, выглядит хорошо. Вот документы.

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"
44
ответ дан 27 November 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: