2012-03-04 30 views
2

我忙於一個學校項目,我從客戶端查詢基於服務器的數據庫。其中一個要求是從數據庫中檢索下一個可用的AutoNumber檢索下一個可用的自動編號

什麼是SQL查詢將檢索下一個可用Autonumber?是否有可能做到這一點?

回答

1

下面的查詢這取決於RDBMS的味道。 MariaDB(MySQL)具有LAST_INSERT_ID()函數,它爲您提供AUTO_INCREMENT字段的最後一個值。支持序列(說安格爾)

數據庫讓您獲得下一個值的東西,如:

SELECT NEXT VALUE FOR some_sequence; 

SELECT some_sequence.NEXTVAL; 
+0

謝謝,但是我忘了提及MSAccess中的數據庫。類似的查詢是否仍然有效? – Arianule 2012-03-04 13:08:18

+0

我從來沒有使用過M $ Access,但是我發現它有:'IDENT_CURRENT('table_name')' - 這個函數顯然給你表中最後一個插入記錄的最後一個ID ... – DejanLekic 2012-03-04 14:44:10

1

如果它是甲骨文,然後運行使用JDBC

SELECT YOUR_SEQUENCE.NEXTVAL FROM DUAL 
2

下一個自動編號是不一樣的,最後自動編號+1 。如果記錄已被刪除,則下一個可能的自動編號可能會比最後一個編號高得多。使用MS Access也可以獲得負面的自動編號。如Allen Browne所示,您可以使用ADOX獲取自動編號列的種子屬性,該列是下一個自動編號。

1

最好的解決方案是插入一條記錄,然後獲取生成的密鑰,然後回滾事務。 它適用於所有具有事務和自動編號支持的數據庫。

+0

問題是如果你在多用戶環境中,不能保證其他人不會在執行此操作和實際插入記錄之間插入記錄。 – ChrisPadgham 2012-03-05 00:16:58

+0

沒有問題,你需要一個唯一的號碼,而你得到它。 – 2012-03-05 15:08:33

+0

存在問題。您回滾交易。你的號碼現在是別人的財產。我真的沒有看到以任何方式獲取下一個自動編號的價值,因爲不管你如何得到它,它可能會在你需要的時候消失。 – Fionnuala 2012-03-06 10:01:37

相關問題