繁体   English   中英

如何获取新添加的记录

[英]How to get the newly added records

在我的应用程序中,我想通过网格视图中的导入操作显示新添加的RECORDS。 sql中是否有任何方法可以检索新添加的行。

我试图通过使用代码来做到这一点,并试图在插入前后获得差异,并且使其工作正常,但使应用程序运行缓慢。 因此,我想在数据库本身中执行此操作。

我正在使用Mysql,ASP.NET。

例如:表在导入操作之前可能具有这些记录

ID Name
1  A
2  B
3  C

导入后的表可能是这样的。

ID Name
1  A
2  B
3  C
4  D
5  E
6  F

我想要类似的结果

ID Name
4  D
5  E
6  F

您需要在表上定义AUTO_INCREMENT列,或者可以使用TIMESTAMP字段来检索新添加的记录,请尝试以下操作:

SELECT * 
FROM table_name 
ORDER BY id DESC 
LIMIT 10;

对于单行插入,可以在INSERT查询之后使用LAST_INSERT_ID

SELECT LAST_INSERT_ID();

对于多行插入,您可以按照以下步骤操作:

START TRANSACTION;

SELECT MAX(id) INTO @var_max_id FROM table_name;

INSERT INTO table_name VALUES(..),(..),...;

SELECT MAX(id) INTO @var_max_id_new FROM table_name;

COMMIT;

SELECT * 
FROM table_name 
WHERE id BETWEEN (@var_max_id + 1) AND @var_max_id_new;

如果您使用自动增量ID作为记录,则可以使用:

SELECT * FROM [table] ORDER BY [id column] DESC LIMIT [number of records]

否则,您应该为此在记录中添加一个TIMESTAMP列,并按此列进行选择。

就个人而言,如果有一个选项,我将不会为此使用记录ID,因为这不是它们的用途。 记录ID可能会在应用程序的整个生命周期内发生变化,并且不一定代表添加项目的顺序。 特别是在数据导入/导出方案中。 我希望创建特殊的列来存储此类信息,例如“ CreatedAt”,“ ModifiedAt”。

我认为这会更简单:

SELECT MAX(id) INTO @Max_table_Id FROM table;

// Insert operation here//////

SELECT * FROM table WHERE id>@Max_table_Id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM