Как я могу установить опцию IDENTITY_INSERT для JDBC PreparedStatement?

Мне нужно скопировать данные в таблицу базы данных MSSQLServer 2005, в которой есть столбец идентификаторов.

Я видел, как отключить столбец идентификации, выполнив

SET IDENTITY_INSERT <table> ON

до вставки запросов.

Как я могу сделать это, когда я использую PreparedStatements для пакетной вставки, и я не могу изменить инструкцию во время операции?

3 ответа

Решение

D'о. Полегче, разобрался, я думаю.

Сначала создайте оператор, выполните SET IDENTITY_INSERT ON. Закрыть заявление.

Создайте PreparedStatement, выполните групповую обработку, закройте подготовленное заявление.

Создайте оператор, выполните SET IDENTITY_INSERT OFF. Закрыть и привести в порядок.

Приветствую любые уточнения или советы по вопросам с этим...

@Brabster Несколько лет спустя, но это может быть полезно всем, кому нужно сделать что-то подобное. Вы можете установить identity_inserton а также off со связанными утверждениями в пределах строки, которую вы передаете prepareStatement():

myStatement.prepareStatement("SET IDENTITY_INSERT MY_TABLE ON;INSERT INTO MY_TABLE ...;SET IDENTITY_INSERT MY_TABLE OFF");

Вы можете включить SET IDENTITY_INSERT ON/OFF как часть подготовленного заявления. Таким образом, вы выполняете только одну команду с точки зрения клиента.

Другие вопросы по тегам