在mysql中经过一段时间后执行删除特定记录

时间:2018-05-25 12:59:43

标签: mysql sql mariadb mysql-event

DROP EVENT `deleteTestEntries`;
CREATE DEFINER=`root`@`localhost` EVENT `deleteTestEntries`
    ON SCHEDULE EVERY 1 MINUTE
    STARTS '2018-05-25 18:17:01'
    ON COMPLETION NOT PRESERVE ENABLE DO
    DELETE FROM lead_master WHERE lead_master.lname LIKE '%Test%'

上述事件有什么问题。 它创建时没有错误但没有执行任何操作。 我只想删除我的lead_master表中的记录,其中lname是'Test'

3 个答案:

答案 0 :(得分:1)

我终于做到了cron工作。 我创建了一个控制器,该控制器调用包含查询以删除记录的模型函数。 并设置在特定时间间隔后调用控制器的cron作业。

答案 1 :(得分:0)

进入my.ini文件并添加此行,很可能这就是问题所在。

event_scheduler = on

重启mysql。显然你甚至可以set it on the fly

答案 2 :(得分:0)

我猜你每分钟都不需要一个活动。只需定义一个视图即可过滤掉您不想要的记录:

inner class RefreshHandler(val observableCachedData: MutableLiveData<List<Data>>) : Observer<List<Data>> {
    val oldData = observableCachedData.value
    override fun onChanged(datalist: List<Data>?) {

        if (datalist.size == oldData.size) {
             // is from previous cached data in the liveData
             return
        }

        observableCachedData.removeObserver(refreshHandler!!)
        val dataSource = dataSourceFactory.getPositionalDataSource()

        // to start a new PagedList and DataSource pair flow
        // and trigger the DataSource's loadInitial()
        dataSource.invalidate()
    }
}

然后每天在较慢的时间安排作业或事件,以删除所需的行。您的应用程序应使用该视图。您的测试应该使用基表。