2014-02-21 41 views
0

我有兩個序列:改變序列同步到另一個序列

sequence_a 
sequence_b 

他們用來生成主鍵

table_a 
table_b 

我需要那麼它的NEXTVAL重啓sequence_b()會與sequ​​ence_a的nextval()相同。

我似乎無法純粹在SQL中執行此操作;我試過的一切都失敗了ALTER SEQUENCE的排列不會接受lastval(),currval()沒有爲此會話定義,還有一些其他問題。

有沒有人有線索我可以做到這一點?我可以手動完成,但這不適合我的需求。這是數據庫遷移的一部分,A的記錄被克隆到B.

這些序列最終會發生偏離,因此如果sequence_b的數量大於sequence_a的數量,那麼我的需求就會被接受。我只需要確保sequence_b以比最高的sequence_a id更高的數字開始。

回答

3

您在這裏有幾個選項。最簡單的可能是使用setval,而不是ALTER SEQUENCE,因爲你只關心b相等或更高:

SELECT setval('sequence_b', nextval('sequence_a')); 
+0

輝煌!謝謝! –