sqlite alter table tek bir ifadede MULTIPLE sütun ekler


159

Sqlite tek bir deyimde tablo eklemek ÇOKLU sütunları değiştirmek mümkün mü? Aşağıdakiler işe yaramaz.

tablo testi değiştirmek sütun mycolumn1 metin eklemek, mycolumn2 metin sütun eklemek;

Yanıtlar:


311

Hayır, bunları birer birer eklemelisiniz. SQLite'ın ALTER TABLE belgelerinin üstündeki sözdizimi diyagramına bakın :

ALTER TABLE sözdizimi

Dalda döngü yoktur, bu ADDnedenle tekrarlamaya izin verilmez.


12
@JoshPinter: Teşekkürler, ancak SQLite belgelerindeki sözdizimi diyagramlarının çok fazla krediyi hak ettiğini düşünüyorum, sözdizimi diyagramları harika, herkes bunları belgelerinde kullanmalıdır.
mu

Bu cevap gerçekten yardımcı oldu. Teşekkür ederim.
Julian Alberto

0

@Mu'dan gelen cevap çok kısa 'doğru. Ek olarak, SQL'deki işlemlerin yararını kullanarak birden çok sütun eklemek için optimize edilmiş bir geçici çözüm eklemek.

String alterTableQuery = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN ";
List<String> newColumns = ..// Your new columns

db.beginTransaction();
for (String column : newColumns){
    db.execSQL(alterTableQuery + column +  " VARCHAR");
}
db.setTransactionSuccessful();
db.endTransaction();

Umarım bu birisine yardım eder.


0

Şimdiye kadar kullanabileceğim tek şey

BEGIN TRANSACTION;
ALTER TABLE tblName ADD ColumnNameA TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameB TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameC TEXT DEFAULT '';
COMMIT

Unutmayın; amaçlı olarak sorguyu birden çok satır olarak okumak.

Sonra ben bu sorguyu çalıştırın ve çalıştırmak birden fazla sütun eklenti olsun ... Yani hayır bir satırda değil, ama bir sorguda evet mümkündür.


-16

tablo değiştirme testi sütun ekle mycolumn1 metin; tablo değiştirme testi sütun ekle mycolumn2 metin;

yukarıdaki yeniden oluşturulmuş sorguyu kullan


6
Bu tek bir ifade değildir - ;ayırıcı olarak kullanılan her şey birden çok ifade olarak yürütülmelidir ve çoğu zaman önemlidir. Diğer cevap, OP'nin istediği şeyin imkansız olduğunu zaten gösterdi.
o11c
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.