【问题标题】:how to return last inserted (auto incremented) row id in HSQL?如何在 HSQL 中返回最后插入(自动递增)的行 ID?
【发布时间】:2012-05-08 08:46:13
【问题描述】:

我正在使用 HSQL 数据库进行测试。我想要独立的数据库文件。 但现在我很难在 HSQL 中获取最后插入的行 ID(自动增量 - 身份)。我怎样才能得到身份证??

【问题讨论】:

  • 我得到了解决方案 CALL IDENTITY();在插入行之后......(但这会给出最后插入的行ID)

标签: sql insert hsqldb auto-increment


【解决方案1】:

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

最后插入到连接标识列的值是 可使用函数 IDENTITY(),例如(其中 Id 是 身份列):

INSERT INTO Test (Id, Name) VALUES (NULL,'Test');
调用 IDENTITY();

【讨论】:

  • 此答案中的链接已过期。关于 Identity() 的信息现在可以在第 10 章中找到:hsqldb.org/doc/guide/…
【解决方案2】:

如果您没有提供表架构,则很难编写查询来执行此操作,但类似于以下内容:

SELECT TOP 1 Id FROM [TABLENAME] ORDER BY Id DESC

【讨论】:

  • 虽然这可能有效,但很难想象有一种更昂贵的方式来获取生成的身份。此外,如果从表中删除行,则无法保证生成的下一个标识值始终是最大的。
  • "无法保证生成的下一个标识值始终是最大的" - 无论使用何种方法获取插入的最后一行的 id,您都会遇到此问题。
  • 首选 IDENTITY() (请参阅 ryanjustus 的回答)。如果其他并发事务也插入数据,则使用表的最大 ID 会返回错误的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 2012-12-19
  • 2019-04-28
  • 1970-01-01
相关资源
最近更新 更多