2013-04-02 53 views
2

直到最近一次,我用冬眠@Entity註釋映射到數據庫tables.All主鍵與@GeneratedValue註釋(strategy = GenerationType.IDENTITY)我如何刷新我的主鍵列?

我有一種情況,我需要創建新模式+移植數據舊模式到新模式。(帶般的落差,長度和類型數列中的更改)

數據到新模式的表成功遷移後,當我嘗試插入使用應用程序數據的拋出異常

[ERROR] util.JDBCExceptionReporter DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1; _NewSchema_._TableName_ , DRIVER=3.51.90 

我相信,應用程序試圖與主鍵值從1開始,因爲同一個應用程序工作正常與空表重新插入行。

我想數據行與它的主鍵值作爲現有行的主鍵的最高值被插入。

任何幫助將感謝全:)

回答

1

你的猜測是正確的,這裏是我的解決方案,執行下列SQL給ID列指定起始位置,那麼你的應用程序將正常工作。

alter table TABLE_NAME alter column ID set GENERATED BY DEFAULT RESTART WITH 10000; 

希望能幫助你:)

+0

非常感謝解:) – user2020677

+0

感謝我的投票:)(投票意味着它是有用的) –

3

是的,你可以做到這一點通過改變表。修改表格並在DB2中設置標識列的起始索引。對於TBALE_A

假設最大行數是50和標識列的名字是TABLE_ID

ALTER TABLE TBALE_A ALTER COLUMN TABLE_ID 
    RESTART WITH 51 
+0

你有你的答案。 –

+0

是的,工作..謝謝你:) – user2020677

+0

如果你有答案,接受答覆,通過點擊接受箭頭。 –

0

在代型,身份的情況下,你應該尋找標識列是自動incemental。 @GeneratedValue(strategy = GenerationType.IDENTITY)所需的主鍵列是自動增量的。