我正在使用JDBC連接到Java DB數據庫,並且想要檢索插入的最後一條記錄的ID(它是自動遞增的)。檢索剛剛插入到Java DB(Derby)數據庫中的記錄的編號
我看到這是一個常見的問題,但我看到solutions使用例如MS SQL Server,Java DB的等價物是什麼?
我正在使用JDBC連接到Java DB數據庫,並且想要檢索插入的最後一條記錄的ID(它是自動遞增的)。檢索剛剛插入到Java DB(Derby)數據庫中的記錄的編號
我看到這是一個常見的問題,但我看到solutions使用例如MS SQL Server,Java DB的等價物是什麼?
不需要爲此使用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
您可能能夠使用IDENTITY_VAL_LOCAL函數獲取要查找的內容。 (Derby Reference)
此函數應該返回「連接的最近分配的標識列的值,其中分配是由於使用VALUES子句的單行INSERT語句而發生的。
值得注意的是,無論相應標識列的實際數據類型如何,此函數都將返回DECIMAL(31,0)。
此外,此只有適用於包含VALUES子句的單行插入。
我只是想確認一下,還以爲我99%肯定,這將仍然返回預期的自動生成的列值,即使在使用`getGeneratedKeys()`插入和獲取列值之間的時間內執行了多個插入語句? – 2016-02-21 06:30:42