mysql - 查询无自增字段的表中新插入的记录

标签 mysql sql

我正在使用另一个应用程序中的现有数据库表。我想以固定的时间间隔查询新插入的记录。 通常,在具有 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/

相关文章:

mysql - 在导航控件上的子表单上进行过滤

php - 没有更新时获取INSERT DUPLICATE KEY UPDATE语句的last_insert_id

sql - 返回值交叉连接

mysql - Liquibase 为 mysql 导入 sql 文件在多个语句上失败

MySQL:加法和乘法

java - 具有 jdbc 连接和 mysql 的 swing 应用程序

SQL CASE 语句 - 缺少运算符错误

sql - 动态表?

sql-server-2005 - 有关SQL语法: *=的问题

php - MySQL更新或插入具有多个查询的整数值以同时更改它