我有一个Java应用程序,它从表A中读取行并将这些行写入表B.
现在,我的另一个要求是定期检查表A(每隔x分钟)检查新插入的行并将它们移动到表B.如果有帮助,表A有created_at
和updated_at
TIMESTAMP字段
有没有办法可以根据TIMESTAMP值检查某个时间间隔内新插入的行,将这些新行添加到List并重新使用我已有的Java方法写入表B?
我是一名Java / MySQL菜鸟,非常感谢任何可以帮助我入门的建议/建议。我正在使用MariaDB数据库。
答案 0 :(得分:0)
方法1:您可以通过添加指示状态为活动或已处理的其他列来实现此目的。从表A中选取行并发送到表B后,您可以将列的状态更新为已处理。这可以使用简单的更新SQL查询来完成。对于状态为打开的任何记录,您可以在每X分钟后继续检查表格A,并使用简单的选择查询,例如CREATE TRIGGER trigger_UpdateTableB ON TableA
FOR INSERT AS
BEGIN
INSERT INTO
TableB
(
primary_column,
column_tableA
)
SELECT
primary_column,
column_tableB,
FROM
INSERTED
END
。
方法2:您可以使用触发器,只要在表A中插入记录,就将记录发送到表B
<route>
<!--To set up a route that generates an event every 60 seconds -->
<from uri="timer://foo?fixedRate=true&period=60000" />
<to uri="sqlComponent:{{sql.selectTableA}}" />
<to uri="sqlComponent:{{sql.updateStatus}}" />
<to uri="sqlComponent:{{sql.InsertTableB}}" />
</route>
方法3:您也可以使用Apache Camel轻松实现类似的功能。
@DeleteMapping(path ={"logical/{id}"})
public User deleteLogical(@PathVariable("id") int id) {
return userService.deleteLogical(id, user);
}
附录 - https://www.thonky.com/how-to/prevent-base-64-decode-hack阅读有关MariaDB中触发器的更多信息
https://mariadb.com/kb/en/library/trigger-overview/了解有关Apache Camel的更多信息