В базе данных Android Studio SQlite у меня есть таблица "title" с двумя столбцами (name, id), я хочу удалить столбец id, я использовал метод транзакции, но он не работает.
После копирования столбца имени в новую таблицу я хочу, чтобы новая таблица имела сам столбец идентификатора.
try {
SQLiteDatabase sqLiteDatabase = this.openOrCreateDatabase("db", MODE_PRIVATE, null);
sqLiteDatabase.execSQL("BEGIN TRANSACTION");
sqLiteDatabase.execSQL("CREATE TEMPORARY TABLE t1(name VARCHAR)");
sqLiteDatabase.execSQL("INSERT INTO t1 SELECT name FROM title");
sqLiteDatabase.execSQL("DROP TABLE title");
sqLiteDatabase.execSQL("CREATE TABLE title (name VARCHAR, id INTEGER PRIMARY KEY)");
sqLiteDatabase.execSQL("INSERT INTO title SELECT name FROM t1");
sqLiteDatabase.execSQL("DROP TABLE t1");
sqLiteDatabase.execSQL("COMMIT");
} catch (Exception e) {
}
И я тоже попробовал это
try {
SQLiteDatabase sqLiteDatabase = this.openOrCreateDatabase("db", MODE_PRIVATE, null);
sqLiteDatabase.execSQL("BEGIN TRANSACTION");
sqLiteDatabase.execSQL("CREATE TEMPORARY TABLE t1(name VARCHAR,id INTEGER PRIMARY KEY)");
sqLiteDatabase.execSQL("INSERT INTO t1 SELECT name FROM title");
sqLiteDatabase.execSQL("DROP TABLE title");
sqLiteDatabase.execSQL("CREATE TABLE title (name VARCHAR, id INTEGER PRIMARY KEY)");
sqLiteDatabase.execSQL("INSERT INTO title SELECT name,id FROM t1");
sqLiteDatabase.execSQL("DROP TABLE t1");
sqLiteDatabase.execSQL("COMMIT");
} catch (Exception e) {
}