【问题标题】:After executing an insert statement, how can I get what the statement with the id values present? [duplicate]执行插入语句后,如何获取带有 id 值的语句? [复制]
【发布时间】:2013-03-10 21:16:35
【问题描述】:

所以我有一个 JDBC 调用来将数据插入数据库。

我希望能够将语句作为一个整体来查看(所以,你知道,“插入 some_table (colA, colB) 值 (1,2)”)。

但我希望看到该声明是 真正 是什么 - 也就是说,

insert into some_table (id, colA, colB) values (8,1,2)

其中 id 是主键(或任何其他 auto_increment 字段),其中 sql thingy 将确定自动递增的值!

这可能吗?

【问题讨论】:

  • 这个问题对我来说毫无意义!不管读多少遍!
  • @Aniket 这个问题对我来说很有意义。
  • 请解释@MarlinPierce
  • 我要做的是:1)获取刚刚插入的行 2)列出该行的所有相关字段。
  • @bharal 自动增量由服务器端的数据库处理。我认为 JDBC 没有办法在没有另一个查询来获取值的情况下确定自动增量的值。但是,您可能会成功地在数据库中查询自动增量字段中的最大值。

标签: java sql jdbc


【解决方案1】:

声明不变。如果您的表中有一个自动递增键 (ID),它永远不会出现在语句中,而是在执行语句时由数据库引擎添加。

因此不可能看到带有 ID 列的语句,但根据您的 DBMS,有不同的技术可以确定自动生成的值是什么。

即。在 SQL Server 中,您可以使用SCOPE_IDENTITY()。在 Oracle 上,您可以使用 RETURNING INTO。 Postgres的可以看Can I use return value of INSERT...RETURNING in another INSERT?

【讨论】:

猜你喜欢
  • 2020-03-11
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多