Как я могу установить опцию 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_insert
on
а также 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
как часть подготовленного заявления. Таким образом, вы выполняете только одну команду с точки зрения клиента.