web-dev-qa-db-fra.com

Comment ajouter une valeur par défaut dans SQLite?

J'ai fait modifier un tableau pour y ajouter une colonne d'état de cette façon

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

Cependant, SQLite ne semble pas ajouter N à la colonne 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

34
Azlam

Cela me semble correct. Voici les documents .

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

Videz votre schéma et vérifiez que votre structure de table est là après avoir appelé ALTER TABLE mais avant INSERT. S'il s'agit d'une transaction, assurez-vous de COMMITER la transaction avant l'insertion.

$ sqlite3 test.db ".dump"
43
databyte