2

我需要將數據複製到具有標識列的MSSQLServer 2005數據庫表中。如何設置JDBC PreparedStatement的IDENTITY_INSERT選項?

我已經看到了如何通過插入查詢之前執行

SET IDENTITY_INSERT <table> ON 

禁用標識列。

如何在使用PreparedStatements進行批量插入時執行此操作,並且在操作過程中無法更改語句?

回答

2

D'oh。很容易,想通了,我想。

首先創建一個語句,執行SET IDENTITY_INSERT ON。關閉聲明。

創建PreparedStatement,做批處理,關閉preparedstatement。

創建語句,執行SET IDENTITY_INSERT OFF。關閉並整理。

歡迎任何問題或改進意見與此...

+0

帕特urself就回來:) – 2009-06-15 12:38:39

+0

你應該能夠做到這一點作爲一個準備好的聲明的一部分,你只需要分開線路。 – Yishai 2009-06-15 12:48:48

2

可以包括SET IDENTITY_INSERT ON/OFF作爲準備語句的一部分。這樣你只能從客戶端的角度執行一個命令。

1

@Brabster遲了幾年,但對任何需要做類似事情的人來說都是有用的。您可以設置identity_insertonoff與字符串中的級聯語句傳遞給prepareStatement()

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