我正在使用另一个应用程序的现有数据库表。我想以固定的间隔查询新插入的记录。
通常,在AUTO INCREMENT
id的表中,我可以存储最后提取的ID,并在WHERE id > :last_id
等查询中使用它。但是,此表不使用AUTO INCREMENT
id但使用uuid作为主键。那么有没有办法只获取新记录?
这个数据库正在使用MySQL。我无法改变数据库结构。数据量非常大,所以我不认为在WHERE uuid NOT IN (:fetch_uuids)
这样的查询中传递获取的uuids是一个可行的解决方案。
编辑:
有created
字段,但遗憾的是,不保证将首先插入创建较小的记录。因此存在使用它丢失记录的风险。
数据由其他应用程序插入,我只在此数据库中具有读取权限。
答案 0 :(得分:0)
您的问题未说明是否有包含记录创建时间的列。如果存在,那么你可以使用它。
您已声明无法更改表格结构,但是您确定无法在现有结构中添加列吗?您可以通过添加自动增量“辅助”ID和/或记录创建时间戳来解决您的问题。如果您无法修改现有表,是否可以使用此附加信息创建新表?
您的问题的解决方案可能在this answer。您可以在现有表中添加其他列,也可以将id插入到新表中,在该表中根据原始表中的TRIGGER
创建ID