2011-02-04 53 views

回答

19

不需要爲此使用DBMS特定的SQL。

這就是getGeneratedKeys()的用途。

preparing your statement您通過姓名(或名稱)自動生成的列然後你可以檢索使用的getGeneratedKeys()

 
PreparedStatement pstmt = connection.prepareStatement(
    "insert into some_table (col1, col2, ..) values (....)", 
     new String[] { "ID_COLUMN"}); 

pstmt.executeUpdate(); 

ResultSet rs = pstmt.getGeneratedKeys(); // will return the ID in ID_COLUMN 

+0

我只是想確認一下,還以爲我99%肯定,這將仍然返回預期的自動生成的列值,即使在使用`getGeneratedKeys()`插入和獲取列值之間的時間內執行了多個插入語句? – 2016-02-21 06:30:42

2

您可能能夠使用IDENTITY_VAL_LOCAL函數獲取要查找的內容。 (Derby Reference

此函數應該返回「連接的最近分配的標識列的值,其中分配是由於使用VALUES子句的單行INSERT語句而發生的。

值得注意的是,無論相應標識列的實際數據類型如何,此函數都將返回DECIMAL(31,0)。

此外,此只有適用於包含VALUES子句的單行插入。

相關問題