i am working with HSQL database for testing purpose. i want standalone db file. but now i am in trouble to get last inserted row id (auto-incremental - identity) in HSQL. how can i get id??
            Asked
            
        
        
            Active
            
        
            Viewed 8,174 times
        
    5
            
            
        - 
                    2i got the solution CALL IDENTITY(); after insert row.... (but this will give last inserted row id) – Ankur Loriya Apr 27 '12 at 15:34
 
2 Answers
22
            
            
        http://www.hsqldb.org/doc/guide/ch09.html
the last inserted value into an identity column for a connection is available using the function IDENTITY(), for example (where Id is the identity column):
INSERT INTO Test (Id, Name) VALUES (NULL,'Test');
CALL IDENTITY();
        ryanjustus
        
- 221
 - 2
 - 3
 
- 
                    The link in this answer is out of date. Info on Identity() can now be found in chapter 10 here: http://www.hsqldb.org/doc/guide/builtinfunctions-chapt.html#bfc_system_functions – Matthieu Cormier Dec 10 '19 at 19:18
 
-5
            It's pretty hard to write a query to perform this when you haven't given your table schema, but something like the following:
SELECT TOP 1 Id FROM [TABLENAME] ORDER BY Id DESC
        weenoid
        
- 1,156
 - 2
 - 11
 - 24
 
- 
                    While this may work, it would be hard to imagine a more expensive way to get the generated identity. Moreover, if rows are deleted from a table, there is no guarantee that the next identity value generated will always be the largest. – scottb Apr 17 '13 at 23:16
 - 
                    "there is no guarantee that the next identity value generated will always be the largest" - Regardless of the method used to obtain the id of the last row inserted you will always encounter this problem. – weenoid Apr 18 '13 at 12:59
 - 
                    Prefer IDENTITY() (see ryanjustus' answer). Using the max ID of the table would return a wrong result if other concurrent transactions also insert data. – Adrien Sep 27 '13 at 12:40