2010-02-12 22 views
28

tuve una tabla modificada para agregar la columna de estado para que de esta manera¿Cómo agregar el valor predeterminado en SQLite?

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

Sin embargo SQLite no se parece a añadir N a la columna para cualquier nuevo elemento creado. ¿Es incorrecta la sintaxis o hay algún problema con SQLite y su compatibilidad con los valores predeterminados?

Estoy usando SQLite 3.6.22

+4

¿Qué versión de sqlite estás utilizando? Estoy usando 3.6.16 y el sql que proporcionaste funcionó perfectamente para mí. –

+2

Tal vez sea un problema con un frontend que está utilizando para manipular el db. ¿Has probado el 'insert' no funcional para ejecutar" a mano "(en sqlite cli client)? – Messa

+1

Esto funcionó para mí. –

Respuesta

38

Se ve bien para mí. 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 

un volcado de esquema y verificar que su estructura de la tabla está allí después de llamar ALTER TABLE, pero antes de la inserción. Si se trata de una transacción, , asegúrese de COMETER la transacción antes de la inserción.

$ sqlite3 test.db ".dump" 
Cuestiones relacionadas