2012-10-19 61 views
2

在我的應用程序中,我想通過gridview中的導入操作來顯示新添加的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 

回答

4

你需要對錶中定義或者您可以使用TIMESTAMP場檢索新添加的記錄AUTO_INCREMENT列,試試這個:

SELECT * 
FROM table_name 
ORDER BY id DESC 
LIMIT 10; 

對於單行插入,您可以在後使用查詢:

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; 
+1

如果我使用的限制,我只能得到10條記錄。但我不知道用戶在一次導入操作中可以添加多少條記錄。 – Vijaychandar

+0

好的..更新了我的答案。 – Omesh

+0

好的..我認爲它會工作。 – Vijaychandar

0

如果您使用自動增量的ID爲您的記錄,你可以使用:

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

否則,您應該爲此目的將TIMESTAMP列添加到您的記錄中,並按此列進行選擇。

就個人而言,如果有選項,我不會爲此使用記錄ID,因爲它不是它們的用途。記錄ID可以在應用程序的整個生命週期中更改,並且不一定表示項目添加的順序。特別是在數據導入/導出場景中。我希望創建專門的列來存儲這些信息,例如「CreatedAt」,「ModifiedAt」。

0

我認爲這將是更簡單:

SELECT MAX(id) INTO @Max_table_Id FROM table; 

// Insert operation here////// 

SELECT * FROM table WHERE id>@Max_table_Id;