我正在寻找一个直接处理数据库的想法。
这是我的用例
我的表格“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 *的专家 谢谢 问候 普拉特
答案 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();
的索引,性能应该没问题。