我正在处理来自另一个应用程序的现有数据库表。我想以固定的间隔查询新插入的记录。通常,在一张table上 AUTO INCREMENT
id,我可以存储最后获取的id并在查询中使用它,如 WHERE id > :last_id
. 但是,此表不使用 AUTO INCREMENT
但使用uuid作为主键。那么,有没有办法只获取新记录?
这个数据库使用的是mysql。我无法更改数据库结构。数据量非常大,所以我认为在查询中传递获取的uuid WHERE uuid NOT IN (:fetch_uuids)
将是一个可行的解决方案。
编辑:有 created
字段,但遗憾的是,不能保证先插入创建的记录中的较小值。因此使用它有丢失记录的风险。数据是由其他应用程序插入的,我在该数据库中只有读取权限。
1条答案
按热度按时间c6ubokkw1#
您的问题没有说明是否有包含记录创建时间的列。如果这个存在,那么你可以用这个。
您已经声明不能更改表结构,但确实不能将列添加到现有结构中吗?您的问题可以通过添加自动递增的'secondary'id和/或记录创建时间戳来解决。如果您不能修改现有的表,您是否可以用这些附加信息创建一个新表?
你的问题的解决办法可能就在这个答案里。您可以向现有表中添加额外的列,也可以将id插入新表中,在新表中根据
TRIGGER
从原始表格