## 問題 在執行數據插入時,postgresql 提示*more than one owned sequence found*錯誤。這個和之前文章中寫的[序列編號錯亂](https://www.cnblogs.com/podolski/p/17349217.html)不同,是由數據表的一個列生成了 ...
問題
在執行數據插入時,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 之類的數字去掉。
參考
- 解決postgresql序列重覆的問題_more than one owned sequence found_witleo灬的博客-CSDN博客
- Value Generation | Npgsql Documentation