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