首页 > 解决方案 > 在没有自增字段的表中查询新插入的记录

问题描述

我正在处理来自另一个应用程序的现有数据库表。我想以固定的时间间隔查询新插入的记录。通常,在具有AUTO INCREMENTid 的表中,我可以存储最后获取的 id 并在查询中使用它,例如WHERE id > :last_id. 但是,此表不使用AUTO INCREMENTid 而是使用 uuid 作为主键。那么有没有办法只获取新记录?

该数据库正在使用 MySQL。我无法更改数据库结构。数据量非常大,所以我不认为在查询中传递获取的 uuidWHERE uuid NOT IN (:fetch_uuids)将是一个可行的解决方案。


编辑:有created字段,但不幸的是,不保证将首先插入创建的较小的记录。因此使用它存在丢失记录的风险。数据是由其他应用程序插入的,我在这个数据库中只有读取权限。

标签: mysqlsql

解决方案


您的问题没有说明是否有一列包含记录的创建时间。如果存在,那么您可以使用它。

您已声明无法更改表结构,但您确定无法在现有结构中添加列吗?您的问题可以通过添加自动增量“辅助”ID 和/或记录创建时间戳来解决。如果您无法修改现有表,您是否可以使用这些附加信息创建一个新表?

您的问题的解决方案可能在此答案中。您可以向现有表添加额外的列,或者将 ids 插入新表中,在新表中根据TRIGGER原始表中的 a 创建 ID


推荐阅读