【发布时间】:2018-09-11 05:39:46
【问题描述】:
我尝试以这种方式实现触发器 onCallBack(),但它既不抛出错误也不工作。
private static Callback sRoomDatabaseCallback = new Callback(){
@Override
public void onOpen (@NonNull SupportSQLiteDatabase db){
super.onOpen(db);
// If you want to keep the data through app restarts,
// new PopulateDbAsync(INSTANCE).execute();
// You can run trigger for database house keeping jobs directly here
db.execSQL("Create Trigger IF NOT EXISTS "+DbConfig.Trigr_NewsAnnouncementDelete +
" After Insert On " + DbConfig.Tbl_NewsAnnouncement+
" Begin Delete From "+DbConfig.Tbl_NewsAnnouncement +
" WHERE DATE(CreatedDate) > DATE('now','-10 days');" +
" END ");
}
};
在调试时我发现 NewsAnnouncementDatabase_Impl.java(自动创建的文件)有以下代码行
@SuppressWarnings("unchecked")
public class NewsAnnouncementDatabase_Impl extends NewsAnnouncementDatabase
{
private volatile NewsAnnouncementDao _newsAnnouncementDao;
private volatile DatabaseHouseKeepingDao _databaseHouseKeepingDao;
@Override
protected SupportSQLiteOpenHelper createOpenHelper(DatabaseConfiguration configuration) {
final SupportSQLiteOpenHelper.Callback _openCallback = new RoomOpenHelper(configuration, new RoomOpenHelper.Delegate(1) {
@Override
public void createAllTables(SupportSQLiteDatabase _db) {
_db.execSQL("CREATE TABLE IF NOT EXISTS `NewsAnnouncement` (`Id` TEXT NOT NULL, `Title` TEXT, `Image` TEXT, `Description` TEXT, `PublishDate` TEXT, `CreatedDate` TEXT, `UserName` TEXT, `ShortDescription` TEXT, PRIMARY KEY(`Id`))");
.....
...
}
谁能帮我找出我的触发器语法或任何其他想法中的问题。我正在尝试使用触发器从数据库中删除过去 10 天的记录。
谢谢。
【问题讨论】:
-
也许这会对你有所帮助stackoverflow.com/questions/45628649/…
标签: android sqlite android-room android-architecture-components