0

这是关于 MSSQL 自动增量功能,我创建了下表

CREATE TABLE Order(
[order_id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NULL,
[original_order_id] [int] NOT NULL
)

在这里,我需要将 original_id 的自动生成值插入 original_order_id。

在谷歌搜索几分钟后,它对我来说很好

insert into Order values('Vegitable Order', IDENT_CURRENT('Order'))

我正在使用 java 应用程序 spring JDBC 模板来执行查询。有什么问题吗?特别是在多线程环境中?

4

1 回答 1

1

使用IDENT_CURRENT不是一个好主意。如果有并发事务,返回的值可能不是最后插入的 id,而是另一个事务的最后插入的 id!

使用 JDBCgetGeneratedKey工具检索第一个生成的 idINSERT并在第二个中使用检索到的值INSERT,或者SCOPE_IDENTITY()在第二个中使用INSERTSCOPE_IDENTITY()确保您在同一个事务中执行这两个语句。

另请参阅:如何在 JDBC 中获取插入 ID?

于 2014-03-26T09:22:34.470 回答