Таблиця allite sqlite додає МНОГО стовпців в один оператор


159

Чи можна змінити таблицю, додавши МНОГО стовпців в один вислів у sqlite? Наступне не працює.

змінити тест таблиці додавання стовпця mycolumn1 текст, додавання стовпця mycolumn2 текст;

Відповіді:


311

Ні, ви повинні додавати їх по одному. Дивіться схему синтаксису вгорі документації ALTER TABLE SQLite :

Синтаксис ALTER TABLE

У ADDгілці немає циклу, тому повтор не дозволений.


12
@JoshPinter: Дякую, але я думаю, що синтаксичні діаграми в документах SQLite заслуговують великої заслуги, синтаксичні діаграми чудові, кожен повинен використовувати їх у своїх документах.
му занадто короткий

Ця відповідь справді була корисною. Дякую.
Джуліан Альберто

0

Відповідь від @mu занадто коротка 'є правильною. Крім того, додавання оптимізованого рішення для додавання декількох стовпців з використанням переваг транзакцій у 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();

Я сподіваюся, що це комусь допоможе.


0

Єдине, що поки що можливо, я використовую

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

Зауважте, що є; спеціально для того, щоб запит читався як кілька рядків.

Тоді я запускаю цей запит і отримую декілька стовпців на ходу… Отже, не не в одному рядку, але так, в одному запиті можливо.


-16

змінити тест таблиці, додати текст стовпця mycolumn1; змінити тест таблиці, додати текст стовпця mycolumn2;

використовувати вищенаведений повторно заданий запит


6
Це не одне твердження - все, що ;в якості розділювача, повинно бути виконано як кілька операторів, і це часто має значення. Інша відповідь уже продемонструвала, що те, що просить ОП, неможливо.
o11c
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.