我忙於一個學校項目,我從客戶端查詢基於服務器的數據庫。其中一個要求是從數據庫中檢索下一個可用的AutoNumber
。檢索下一個可用的自動編號
什麼是SQL查詢將檢索下一個可用Autonumber
?是否有可能做到這一點?
我忙於一個學校項目,我從客戶端查詢基於服務器的數據庫。其中一個要求是從數據庫中檢索下一個可用的AutoNumber
。檢索下一個可用的自動編號
什麼是SQL查詢將檢索下一個可用Autonumber
?是否有可能做到這一點?
下面的查詢這取決於RDBMS的味道。 MariaDB(MySQL)具有LAST_INSERT_ID()函數,它爲您提供AUTO_INCREMENT字段的最後一個值。支持序列(說安格爾)
數據庫讓您獲得下一個值的東西,如:
SELECT NEXT VALUE FOR some_sequence;
或
SELECT some_sequence.NEXTVAL;
如果它是甲骨文,然後運行使用JDBC
SELECT YOUR_SEQUENCE.NEXTVAL FROM DUAL
下一個自動編號是不一樣的,最後自動編號+1 。如果記錄已被刪除,則下一個可能的自動編號可能會比最後一個編號高得多。使用MS Access也可以獲得負面的自動編號。如Allen Browne所示,您可以使用ADOX獲取自動編號列的種子屬性,該列是下一個自動編號。
最好的解決方案是插入一條記錄,然後獲取生成的密鑰,然後回滾事務。 它適用於所有具有事務和自動編號支持的數據庫。
問題是如果你在多用戶環境中,不能保證其他人不會在執行此操作和實際插入記錄之間插入記錄。 – ChrisPadgham 2012-03-05 00:16:58
沒有問題,你需要一個唯一的號碼,而你得到它。 – 2012-03-05 15:08:33
存在問題。您回滾交易。你的號碼現在是別人的財產。我真的沒有看到以任何方式獲取下一個自動編號的價值,因爲不管你如何得到它,它可能會在你需要的時候消失。 – Fionnuala 2012-03-06 10:01:37
謝謝,但是我忘了提及MSAccess中的數據庫。類似的查詢是否仍然有效? – Arianule 2012-03-04 13:08:18
我從來沒有使用過M $ Access,但是我發現它有:'IDENT_CURRENT('table_name')' - 這個函數顯然給你表中最後一個插入記錄的最後一個ID ... – DejanLekic 2012-03-04 14:44:10