Как я могу установить опцию IDENTITY_INSERT для JDBC PreparedStatement? - PullRequest
2 голосов
/ 15 июня 2009

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

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

SET IDENTITY_INSERT <table> ON

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

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

Ответы [ 3 ]

2 голосов
/ 15 июня 2009

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

2 голосов
/ 15 июня 2009

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

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

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

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

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

1 голос
/ 21 ноября 2014

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

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