我的任務是重新啓動PostgreSQL數據庫中許多不同的串行列的序列。通常,我會簡單地使用:如何重新啓動由Hibernate處理的PostgreSQL序列?
ALTER SEQUENCE serial RESTART WITH 105;
但是,似乎Hibernate正在用於處理數據庫序列。我對Hibernate一無所知,但我的理解是,hibernate_sequence是所有表的全局序列。那是對的嗎?
我假設我需要做以下內容,然後:
ALTER SEQUENCE hibernate_sequence RESTART WITH 105;
但我不知道後果會是什麼。假設我有表A,B,C和D.這些表中的每一個都有一個類型爲serial的ID列。上述hibernate_sequence上的SQL語句是否會重新啓動所有表的ID列?
謝謝!
映射是用JPA完成的,例如,所有類(映射到數據庫的表格)都有一個「Integer id = -1」,映射定義爲「@GeneratedValue(strategy = GenerationType 。序列)」。由於數據庫中只有一個序列(hibernate_sequence),並且由於所有不同表中的ID值之間存在差距,所以我認爲可以安全地假設默認序列是在所有共享序列之間共享的,如前所述。由於避免了數據庫傳輸中的一些衝突,因此需要爲所有這些表重新啓動序列。 – littleK 2012-08-17 15:02:47
再次感謝您的幫助,非常翔實。 – littleK 2012-08-17 15:03:34
@littleK沒問題。希望它有一點幫助。合併數據庫......嗯......「有趣」。特別有趣。希望你買了很多很多的杜松子酒。 – 2012-08-17 15:15:09