我需要将数据复制到具有标识列的 MSSQLServer 2005 数据库表中。
我已经看到如何通过执行禁用标识列
SET IDENTITY_INSERT <table> ON
在插入查询之前。
当我使用 PreparedStatements 进行批量插入并且在操作期间无法更改语句时,我该怎么做?
我需要将数据复制到具有标识列的 MSSQLServer 2005 数据库表中。
我已经看到如何通过执行禁用标识列
SET IDENTITY_INSERT <table> ON
在插入查询之前。
当我使用 PreparedStatements 进行批量插入并且在操作期间无法更改语句时,我该怎么做?
@Brabster 晚了几年,但它可能对任何需要做类似事情的人有用。您可以在传递给的字符串中设置identity_insert
on
和off
连接语句prepareStatement()
:
myStatement.prepareStatement("SET IDENTITY_INSERT MY_TABLE ON;INSERT INTO MY_TABLE ...;SET IDENTITY_INSERT MY_TABLE OFF");
哦。容易,想通了,我想。
首先创建一个Statement,执行SET IDENTITY_INSERT ON。关闭声明。
创建 PreparedStatement,做批处理,关闭preparedStatement。
创建一个Statement,执行SET IDENTITY_INSERT OFF。关闭并整理。
欢迎对此问题进行任何改进或建议...
您可以将SET IDENTITY_INSERT ON/OFF
其作为准备好的语句的一部分。这样,您只从客户端的角度执行一个命令。