Sybase JDBC 获取生成的密钥

Posted

技术标签:

【中文标题】Sybase JDBC 获取生成的密钥【英文标题】:Sybase JDBC get generated keys 【发布时间】:2011-08-27 12:08:20 【问题描述】:

在 Postgres 中,我可以写

INSERT .. RETURNING *

检索插入期间生成的所有值。在Oracle,HSQLDB,我可以使用

String[] columnNames = ...
PreparedStatement stmt = connection.prepareStatement(sql, columnNames);
// ...
stmt.execute();
stmt.getGeneratedKeys();

检索所有已生成的值。 mysql 有点受限,只返回设置为AUTO_INCREMENT 的列。但是,如何使用 Sybase SQL Anywhere 做到这一点? JDBC 驱动程序没有实现这些方法,并且没有 INSERT .. RETURNING 子句,就像在 Postgres 中一样。有没有办法做到这一点,除了可能运行

SELECT @@identity

插入后立即?

【问题讨论】:

【参考方案1】:

我当前的实现执行三个连续的 SQL 语句:

-- insert the data first
INSERT INTO .. VALUES (..)

-- get the generated identity value immediately afterwards
SELECT @@identity

-- get the remaining values from the record (possibly generated by a trigger)
SELECT * FROM .. WHERE ID = :previous_identity

如果只请求ID 列,则可以省略第三条语句

【讨论】:

以上是关于Sybase JDBC 获取生成的密钥的主要内容,如果未能解决你的问题,请参考以下文章

jdbc 有效地获取生成的密钥以及其他数据

如何使用 SimpleJdbcInsert 和 executeBatch 和 MYSQL JDBC 驱动程序获取生成的密钥?

如何使用 JDBC 和 Microsoft Access 获取自动递增的密钥?

linux下生成ssh密钥并获取密钥

可以从生成的密钥中获取任何数据以在 Playstore 上上传应用程序吗?

如何使用 commons dbutils 获取生成的密钥?