创建事件以删除表中的记录

时间:2015-05-06 12:51:23

标签: java mysql sql jdbc

我正在尝试让我的mysql事件工作但是我遇到的问题是在没有autoDelete事件的情况下创建了总线表,我没有收到任何错误。我在phpmyadmin中通过在sql浏览器中执行此语句show events来检查我的表我得到结果empty results,因为我说总线表在那里?!

我检查了phpmyadmin sql浏览器中的EVENT语法代码,它有效吗?

DatabaseMetaData dbm = con.getMetaData();
        ResultSet tables = dbm.getTables(null, null, "bus", null);
        if (tables.next()) {
            // here if the table exist just update data. I have the most of my code her.
            return status;
        } else {
            // Create bus table
            stt.execute("CREATE TABLE IF NOT EXISTS bus"
                    + "(id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,"
                    + "mac VARCHAR(30) NOT NULL UNIQUE,"
                    + "route int(11) NOT NULL,"
                    + "latitude FLOAT(10,6) NOT NULL,"
                    + "longitude FLOAT(10,6) NOT NULL,"
                    + "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");

        stt.execute("CREATE EVENT AutoDelete"
                    + "ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE "
                    + "DO "
                    + "DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 3 MINUTE)");
            insert_update_data(mac, route, latD, longD, con);
            return status;

        }

1 个答案:

答案 0 :(得分:0)

尝试在事件名称后添加空格

"CREATE EVENT AutoDelete "

我认为您的代码目前正在创建一个类似于以下内容的字符串:

CREATE EVENT AutoDeleteON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE DO DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 3 MINUTE)

虽然我很惊讶这并没有抛出SQLException