如何在HSQL中返回最后插入(自动增量)的行ID?

6

我正在使用HSQL数据库进行测试,我需要一个独立的数据库文件。但是现在我遇到了问题,无法获取HSQL中最后插入的行ID(自增 - 自动标识)。请问如何获取ID?


2
我已经找到解决方案:在插入行后,调用以下代码(但这将返回最后插入的行ID):CALL IDENTITY(); - Ankur Loriya
2个回答

23

http://www.hsqldb.org/doc/guide/ch09.html

最后插入到连接的自增列中的值可以使用函数IDENTITY()来获取,例如(其中Id是自增列):
INSERT INTO Test (Id, Name) VALUES (NULL,'Test');

CALL IDENTITY();

这个答案中的链接已经过时。现在可以在这里的第10章找到Identity()的信息:http://www.hsqldb.org/doc/guide/builtinfunctions-chapt.html#bfc_system_functions - Matthieu Cormier

-5
很难在没有给出表模式的情况下编写一个执行此操作的查询,但类似以下内容:
SELECT TOP 1 Id FROM [TABLENAME] ORDER BY Id DESC

虽然这样做可能有效,但很难想象还有比这更昂贵的获取生成标识的方式。此外,如果从表中删除行,则不能保证下一个生成的标识值始终是最大的。 - scottb
“无法保证下一个生成的标识值始终是最大的”,无论使用何种方法获取插入的最后一行的ID,您都将遇到此问题。 - weenoid
最好使用IDENTITY()(请参见ryanjustus的答案)。如果其他并发事务也插入数据,则使用表的最大ID将返回错误的结果。 - Adrien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接