2010-02-12 33 views
28

Ben bu şekilde kendisine oluşturulan yeni ITEM sütuna N eklemek gibi görünmüyor birSQLite'de varsayılan değer nasıl eklenir?

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

Ancak SQLite'ı durumu sütununu eklemek için modifiye bir tablo vardı. Sözdizimi yanlış mı, yoksa SQLite ile ilgili herhangi bir sorun var mı?

Ben 3.6.22

+4

Hangi sqlite sürümünü kullanıyorsunuz? Ben 3.6.16 kullanıyorum ve sağladığınız sql benim için mükemmel çalıştı. –

+2

Belki de db'yi değiştirmek için kullandığınız ön taraftaki bir sorun olabilir. "Elle" (sqlite cli client'de) çalıştırmak için "non-functional" işlevini denediniz mi? – Messa

+1

Bu benim için çalıştı. –

cevap

38

Bana iyi görünüyor SQLite kullanıyorum. 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 

şema dökümü ve tablo yapısı ALTER TABLE çağrıldıktan sonra ancak INSERT önce orada olun. Bir işlemde ise, ekleme işleminden önce işleminin COMMIT yapıldığından emin olun.

$ sqlite3 test.db ".dump"