2010-02-12 6 views
28

j'avais une table modifiée pour ajouter la colonne d'état dans ce modeComment ajouter une valeur par défaut dans SQLite?

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

Cependant SQLite ne marche semble ajouter à la colonne N pour tout nouvel élément créé. La syntaxe est-elle incorrecte ou existe-t-il un problème avec SQLite et sa prise en charge des valeurs par défaut? J'utilise SQLite 3.6.22

+4

Quelle version de sqlite utilisez-vous? J'utilise 3.6.16 et le sql que vous avez fourni a fonctionné parfaitement pour moi. –

+2

Peut-être que c'est un problème avec une interface que vous utilisez pour manipuler la base de données. Avez-vous essayé le 'insert' non fonctionnel pour exécuter" à la main "(dans le client cli sqlite)? – Messa

+1

Cela a fonctionné pour moi. –

Répondre

38

Cela me semble bon. 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, 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 

Dump votre schéma et vérifiez que votre structure de la table est là après avoir appelé ALTER TABLE, mais avant l'INSERT. Si c'est dans une transaction, assurez-vous de COMMIT la transaction avant l'insertion.

$ sqlite3 test.db ".dump" 
Questions connexes