【Kotlin/RoomDataBase】OnConflictStrategyの使い方と設定方法!
この記事からわかること
- Android Studio/KotlinでRoomデータベースの使い方
- OnConflictStrategyで設定できる値
- InsertやUpdate時にコンフリクトが発生した場合の対処方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
RoomのOnConflictStrategyとは?
Room
のOnConflictStrategy
はデータベースにデータをInsertやUpdateする際に同じキーが既に存在(コンフリクトが発生)する場合の挙動を設定するための列挙型です。指定方法は@Insert
や@Update
アノテーションの引数onConflict
にOnConflictStrategy
型で値を渡すだけです。
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insert(user: User): Long
@Update(onConflict = OnConflictStrategy.IGNORE)
fun update(user: User)
設定値の種類
設定できる値は以下のとおりです。FAIL
とROLLBACK
は既にDeprecatedになっておりABORT
への置き換えが推奨されています。
Strategyの種類 | 挙動 |
---|---|
ABORT | トランザクションを中止しロールバック |
FAIL | トランザクションを失敗させる ※Deprecated:ABORT推奨 |
IGNORE | コンフリクトが発生しても無視し、処理を継続する Insertなら-1が返る |
REPLACE | 古いデータを置き換える |
ROLLBACK | トランザクションをロールバック ※Deprecated:ABORT推奨 |
@Insert
や@Update
アノテーションのデフォルト値はABORTになっているようです。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。