Có thể thay đổi bảng thêm các cột MULTIPLE trong một câu lệnh trong sqlite không? Những điều sau đây sẽ không hoạt động.
thay đổi bảng kiểm tra thêm văn bản cột mycolumn1, thêm văn bản cột mycolumn2;
Có thể thay đổi bảng thêm các cột MULTIPLE trong một câu lệnh trong sqlite không? Những điều sau đây sẽ không hoạt động.
thay đổi bảng kiểm tra thêm văn bản cột mycolumn1, thêm văn bản cột mycolumn2;
Câu trả lời:
Không, bạn phải thêm chúng cùng một lúc. Xem sơ đồ cú pháp ở đầu tài liệu ALTER TABLE của SQLite :
Không có vòng lặp trong ADD
chi nhánh nên không được phép lặp lại.
Câu trả lời từ @mu quá ngắn 'là đúng. Ngoài ra, việc thêm một cách giải quyết được tối ưu hóa để thêm nhiều cột sử dụng lợi ích của các giao dịch trong 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();
Tôi hy vọng điều này sẽ giúp được ai đó.
Điều duy nhất cho đến nay tôi có thể sử dụng là
BEGIN TRANSACTION;
ALTER TABLE tblName ADD ColumnNameA TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameB TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameC TEXT DEFAULT '';
COMMIT
Lưu ý rằng có; về mục đích để làm cho truy vấn được đọc thành nhiều dòng.
Sau đó, tôi chạy truy vấn này và nhận được nhiều cột được thêm vào khi chạy ... Vì vậy, không phải trong một dòng, nhưng có trong một truy vấn có thể.
thay đổi bảng kiểm tra thêm văn bản cột mycolumn1; thay đổi bảng kiểm tra thêm văn bản cột mycolumn2;
sử dụng truy vấn được xác định lại ở trên
;
tư cách là dấu phân cách phải được thực thi dưới dạng nhiều câu lệnh và điều đó thường có vấn đề. Tuy nhiên, câu trả lời khác đã chứng minh rằng những gì OP yêu cầu là không thể.