使用房间数据库(房间持久性库)创建触发器

如何使用房间持久性库“ 创建触发器

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 

在你的RoomDatabase上调用getOpenHelper() 。 这给你一个SupportSQLiteOpenHelper ,它有一个让人想起SQLiteOpenHelper的API。 在那里,调用getWritableDatabase()来获得一个SupportSQLiteDatabase ,然后在那里使用execSQL()来执行你的SQL语句。 一个RoomDatabase.Callback是一个执行这种SQL的地方,正如AdamMc331在这个Kotlin代码片段中所说明的那样。

IOW,Room并没有真正帮助解决这个问题,但是对于像这样的情况,您总是可以使用较低级别的数据库API。