簡體   English   中英

使用SQLAlchemy的多列鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM