問題
在執行數據插入時,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 之類的數字去掉。