0
私はかなり新しいSQLiteとActiveAndroidです。ActiveAndroidスキーマ移行オブジェクトを追加する列
私はアプリのアップデートを展開するためにデータベースを移行する必要があります。 ActiveAndroidでは、スキーマの移行は移行スクリプトを作成することによって実行されます。基本的なデータ型を扱うときにこれを行う方法を理解するのは簡単ですが、他のオブジェクト/クラスにマッピングされている列を追加する方法は混乱します。
は例えば、以下の既存のモデルである:
@Table(name = "GatewayDevices", id = BaseColumns._ID)
public class GatewayDevice extends Model {
private static final String TAG = GatewayDevice.class.getSimpleName();
@Column(name = "identifier", unique = true, onUniqueConflict = Column.ConflictAction.REPLACE, notNull = true)
private String identifier;
@Column(name = "deviceType", notNull = true)
private String deviceType;
@Column(name = "name")
private String name;
public GatewayDevice() {
super();
}
...
}
そして、私はそれがために更新しています:
@Table(name = "GatewayDevices", id = BaseColumns._ID)
public class GatewayDevice extends Model {
private static final String TAG = GatewayDevice.class.getSimpleName();
@Column(name = "identifier", unique = true, onUniqueConflict = Column.ConflictAction.REPLACE, notNull = true)
private String identifier;
@Column(name = "deviceType", notNull = true)
private String deviceType;
@Column(name = "name")
private String name;
@Column(name = "controller", onUpdate = Column.ForeignKeyAction.CASCADE, onDelete = Column.ForeignKeyAction.CASCADE)
private Controller controller;
public GatewayDevice() {
super();
}
...
}
がどのように私は、基本的なALTER TABLE GatewayDevice ADD COLUMN controller <type>
構造を使用してこの列を追加するには?
だから、問題はあなたがドンは」外部キーフィールドと呼ばれるものを知っていますか?私はどちらか分かりませんし、ドキュメントは言わないようです。 2つのオプションは、ソースコードを調べたり、新しいモデルでアプリケーションを実行したり、データベースを調べたり、AAが外部キーを作成する方法を確認したりすることです。あなたがそれを理解したら、あなたの解決策を投稿してください。 – nasch