我使用Django 2.2和我的問題是:做transaction.atomic回滾增量的PK序列?
下面是我寫的導致我遇到這個問題的背景錯誤
我正面臨一個我無法弄清楚的非常奇怪的問題,我希望有人遇到過類似的問題。
使用 django ORM.create()函式的插入正在回傳django.db.utils.IntegrityError: duplicate key value violates unique constraint "my_table_pkey" DETAIL: Key (id)=(5795) already exists.
美好的。但是后來我查看了表,沒有 id=5795 的記錄存在!
SELECT * from my_table where id=5795;
顯示 (0 rows)
查看該序列my_table_id_seq表明它仍然增加以顯示last_value = 5795好像插入了上述記錄。此外,該問題并不總是發生。在id=5796處插入具有不同資料的成功插入。(我嘗試重置 pk 序列,但沒有做任何事情,因為無論如何它似乎都不是問題)
我對此感到很困惑,它在一張特定的桌子上給我們帶來了很多問題。最后,我意識到呼叫已包含在內,transaction.atomic并且特定場景可能會導致具有相同pk.
所以我的理論是:事務原子不會回滾
uj5u.com熱心網友回復:
Postgres 序列不會回滾。每次他們被一個宣告觸動時,他們都會推進宣告是否成功。有關更多資訊,請參閱此處創建序列的注釋部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/380152.html
標籤:姜戈 PostgreSQL的
上一篇:事實和維度:動態維度
下一篇:聚合視窗函式和外連接
