postgresql序列重複問題處理

問題

在執行數據插入時,postgresql 提示more than one owned sequence found錯誤。這個和之前文章中寫的序列編號錯亂不同,是由數據表的一個列生成了多個序列導致的。(常見於兩個數據庫的拷貝、同步等操作)。

如果查看序列,會發現序列中有很多重複的項目,可以執行語句:

SELECT 'DROP SEQUENCE "'||c.relname||'";' FROM pg_class c WHERE c.relkind ='S'
ORDER BY c.relname

生成刪除每一個序列的語句。接下來需要然後複製出來執行,記得選擇遇到錯誤繼續,這樣就可以刪除所有多餘的序列。然後按照我之前文章寫的批量更新序列就可以了。如果是強迫症的話,可以使用:

 UPDATE pg_class SET relname = substr(relname,0,char_length(relname)) WHERE relname like '%seq_'

將名字後面多餘的 1、2 之類的數字去掉。

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章