У меня есть таблица Сервер
@Entity(tableName = "servers")
data class ServerDto(
@PrimaryKey
@ColumnInfo(name = "server_id")
var serverId: Long,
@ColumnInfo(name = "address", defaultValue = "")
var serverAddress: String,
@ColumnInfo(name = "description", defaultValue = "")
var serverDescription: String,
@ColumnInfo(name = "file_segment")
var fileSegment: Int
) : Serializable
и таблица учетных записей
@Entity(tableName = "accounts", primaryKeys = ["server_id", "account_id"])
data class AccountDto(
@ColumnInfo(name = "server_id")
val serverId: Long,
@ColumnInfo(name = "account_id")
val accountId: Int,
@ColumnInfo(name = "username", defaultValue = "")
val username: String,
@ColumnInfo(name = "password", defaultValue = "")
val password: String,
@ColumnInfo(name = "first_name", defaultValue = "")
var firstname: String,
@ColumnInfo(name = "last_name", defaultValue = "")
var lastname: String,
@ColumnInfo(name = "email", defaultValue = "")
var email: String,
@ColumnInfo(name = "active")
var active: Int
) : Serializable
Я хочу перенести 2 столбца (имя пользователя, пароль) из учетных записей на сервер и затем удалить их из учетные записи. Я написал Migrations, но я вижу, что Android Studio не позволяет писать DROP COLUMN, так как она подчеркивает это красным. Что не так с этим ??
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE servers ADD COLUMN username VARCHAR")
database.execSQL("ALTER TABLE servers ADD COLUMN password VARCHAR")
database.execSQL("UPDATE servers SET username = (SELECT a.username FROM accounts a where a.server_id = servers.server_id and a.active = 1)")
database.execSQL("UPDATE servers SET password = (SELECT a.password FROM accounts a where a.server_id = servers.server_id and a.active = 1)")
database.execSQL("ALTER TABLE accounts ***DROP*** COLUMN username")
database.execSQL("ALTER TABLE accounts ***DROP*** COLUMN password")
}