MSSQL - 获取自动增量列值并将其保存在另一列中

时间:2014-03-26 07:11:59

标签: jdbc auto-increment mssql-jdbc

这是关于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。

用Google搜索后几分钟后,它对我来说很好用

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

我正在使用java应用程序spring JDBC模板来执行quires。可以有任何问题吗?特别是在多线程环境中?

1 个答案:

答案 0 :(得分:1)

使用IDENT_CURRENT并不是一个好主意。如果有并发交易,则返回的值可能不是上次插入的ID,而是另一个交易的最后插入ID!

使用JDBC getGeneratedKey工具检索第一个INSERT的生成ID,并在第二个INSERT中使用检索到的值,或在第二个SCOPE_IDENTITY()中使用INSERT {1}}。使用SCOPE_IDENTITY()确保您在同一事务中执行两个语句。

另请参阅:How to get the insert ID in JDBC?