在mySQL中删除/复制具有特定条件的数据库中的数据

时间:2018-04-08 13:29:22

标签: mysql sql

我正在寻找一个直接处理数据库的想法。

这是我的用例

我的表格“EVENT_REGISTERED”列(ID, Event_name,Event_DateTime)

我想在前端显示EVENT_REGISTERED,其日期和时间未通过。即我只想显示即将发生的事件而不是历史事件。

当然,在显示之前可以使用JS code来处理。

但我想要的是应该有某种触发器,它会从“EVENT_ REGISTERED”表中删除实例并将其复制到另一个表“HISTORICAL_EVENT” 我不能创建一个MY SQL EVENT来执行此操作,因为它像批处理作业一样,我不能每5分钟运行一次,因为那里可以有超过10000行。

我也看到了Trigger选项,我不知道如何使用它,因为它表示在执行特定操作后它将被激活。此处的具体操作为CURRENT_DATETIME == EVENT_DATETIME

任何人都可以给我一个方向或任何其他方法来实现这一目标吗?

**我不是MySQL *的专家 谢谢 问候 普拉特

1 个答案:

答案 0 :(得分:1)

不要开始在表之间移动行。只需运行查询:

public static void main(String[] args) {            
    Scanner sc = new Scanner(System.in);

    // Accept two dates from the user and return the number of days between the two dates
    numDaysBetween(sc); // calls to the inputDate are inside    

    sc.close();     

} // end main   

public static int[] inputDate(Scanner sc) {     
    System.out.print("Enter Date - In format dd/mm/yyyy: ");        

    while(!sc.hasNext("([0-9]{2})/([0-9]{2})/([0-9]){4}")) {
        System.out.print("That's not a valid date. Enter the date again: ");
        sc.nextLine();                 
    } // end while      
    String dateAsString = sc.nextLine();
    String[] dateArr = dateAsString.split("/");

    int[] dateArrInt = Arrays.asList(dateArr)
            .stream()
            .mapToInt(Integer::parseInt)
            .toArray();
    System.out.println(Arrays.toString(dateArrInt));
    try {
        //LocalDate date = LocalDate.of(dateArrInt[2], dateArrInt[1], dateArrInt[0]);
        LocalDate d = LocalDate.of(Integer.parseInt(dateArr[2]), Integer.parseInt(dateArr[1]), Integer.parseInt(dateArr[0]));
        //System.out.println(d.getDayOfMonth() + "/" + d.getMonthValue() + "/" + d.getYear() );

    } catch(DateTimeException e) {                  
        System.out.print(e.getMessage() + "\n");    
        inputDate(sc);

    } // end catch

    return dateArrInt;
} // end inputDate()

使用select er.* from event_registered where er.event_datetime > now(); 的索引,性能应该没问题。