web-dev-qa-db-ja.com

Room Database(Room Persistence Library)を使用してトリガーを作成する

部屋の永続性ライブラリを使用して "トリガーを作成"する方法

CREATE TRIGGER  IF NOT EXISTS delete_till_10 INSERT ON user WHEN (select count(*) from user)>9

BEGIN 

    DELETE FROM user WHERE id IN  (SELECT id FROM user ORDER BY id limit (select count(*) -9 from user));

END
11
Vishal

RoomDatabasegetOpenHelper()を呼び出します。これにより、SupportSQLiteOpenHelperを連想させるAPIを持つSQLiteOpenHelperが得られます。そこで、getWritableDatabase()を呼び出してSupportSQLiteDatabaseを取得し、そこでexecSQL()を使用してSQLステートメントを実行します。 A RoomDatabase.Callbackは、AdamMc331が このKotlinスニペット で示しているように、この種のSQLを実行する1つの場所です。

IOW、Roomはこのシナリオでは実際には役に立ちませんが、このような場合はいつでも低レベルのデータベースAPIを使用できます。

13
CommonsWare