sqlite alter table menambahkan kolom GANDA dalam satu pernyataan


159

Apakah mungkin untuk mengubah tabel menambahkan kolom GANDA dalam satu pernyataan dalam sqlite? Berikut ini tidak akan berfungsi.

ubah tabel uji tambah kolom teks mycolumn1, tambahkan kolom teks mycolumn2;

Jawaban:


311

Tidak, Anda harus menambahkannya satu per satu. Lihat diagram sintaks di bagian atas dokumentasi ALTER TABLE SQLite :

Sintaks ALTER TABLE

Tidak ada loop di ADDcabang sehingga tidak ada pengulangan yang diizinkan.


12
@ JoshPinter: Terima kasih tapi saya pikir diagram sintaks dalam dokumen SQLite layak mendapatkan banyak penghargaan, diagram sintaksnya bagus, semua orang harus menggunakannya dalam dokumen mereka.
mu terlalu pendek

Jawaban ini sangat membantu. Terima kasih.
Julian Alberto

0

Jawaban dari @mu terlalu pendek 'benar. Sebagai tambahan, menambahkan solusi yang dioptimalkan untuk menambahkan beberapa kolom menggunakan manfaat transaksi dalam SQL.

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();

Saya harap ini akan membantu seseorang.


0

Satu-satunya hal sejauh ini yang mungkin saya gunakan adalah

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

Perhatikan bahwa ada; dengan tujuan membuat kueri dibaca sebagai beberapa baris.

Lalu saya menjalankan kueri ini dan menambahkan beberapa kolom saat dijalankan ... Jadi, tidak dalam satu baris, tapi ya dalam satu kueri, itu mungkin.


-16

ubah tabel test add kolom mycolumn1 teks; ubah tabel test add kolom mycolumn2 teks;

gunakan kueri redefined di atas


6
Itu bukan pernyataan tunggal - apa pun dengan ;sebagai pemisah harus dieksekusi sebagai banyak pernyataan, dan itu sering kali penting. Jawaban lain sudah menunjukkan bahwa apa yang diminta OP itu tidak mungkin.
o11c
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.