我正在使用另一个应用程序中的现有数据库表。我想以固定的时间间隔查询新插入的记录。
通常,在具有 AUTO INCREMENT id 的表中,我可以存储最后获取的 id 并在查询中使用它,例如 WHERE id > :last_id 。但是,该表不使用AUTO INCRMENT
id,而是使用uuid作为主键。那么有没有办法只获取新记录呢?
此数据库正在使用 MySQL。我无法更改数据库结构。数据量非常大,因此我认为在查询中传递获取的 uuid 不会是一个可行的解决方案,例如 WHERE uuid NOT IN (:fetch_uuids)
。
<小时/>
编辑:
有 created
字段,但不幸的是,不能保证创建较小的记录将首先插入。因此使用它存在丢失记录的风险。
数据是由其他应用程序插入的,我对此数据库只有读取权限。
最佳答案
您的问题没有说明是否有一列包含记录的创建时间。如果存在,那么您可以使用它。
您已经声明不能更改表结构,但您确定不能在现有结构上添加列吗?您的问题可以通过添加自动增量“辅助”ID 和/或记录创建时间戳来解决。如果您无法修改现有表,您是否可以使用这些附加信息创建一个新表?
您的问题的解决方案可能在this answer中。您可以向现有表添加额外的列,或者将 ids 插入到新表中,在该新表中根据原始表中的 TRIGGER
创建 ID
关于mysql - 查询无自增字段的表中新插入的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50265241/