[英]Multiple-column keys with SQLAlchemy
我有一個具有復合主鍵(id_a, id_b)
的數據庫表。 他們實際上並不是這個名字,但是我在簡化這個問題。 id_a
是一個外鍵,而id_b
只是一個整數,可以說是“序列號”。 我不能僅僅使id_b
auto_incrementing因為InnoDB存儲引擎不允許使用它(因為它不是復合鍵中的第一個字段)。
我想這樣做,以便可以將這些對象與id_a
進行“分組”,例如:
id_a id_b
----------------
1 1
1 2
2 1
2 2
2 3
並且插入具有( id_a=1
)的行的結果應自動設置id_b=3
。 我想避免使用數據庫鎖,尤其是當完全允許使用不同id_a
並發插入時,無需鎖定整個表。
我正在通過SQLAlchemy(使用ORM)通過Python訪問此數據庫,盡管我懷疑可以就客戶端(純MySQL)而言,以疑問的方式回答此問題。
SELECT coalesce(max(ID_B),0)+1 FROM yourTable WHERE ID_A = '1'
但是,如果沒有鎖定,則冒着獲取重復ID_B值的風險,因此您必須處理insert語句中的重復鍵錯誤。 代碼中的“重試”會自動設置次數或錯誤,並迫使用戶重試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.