以值分組實作自訂SERIAL自動遞增
挑戰:
在一個部落格系統中,您有一個文章表,包含三列:id(序列)、category(varchar)和category_id(int)。您希望category_id在每個類別中自動遞增,同時在整個表中保持唯一性。
自訂邏輯的無效性:
嘗試使用兩個單獨的查詢和邏輯程式碼來實現這一點,可能會在多用戶環境中導致並發問題。
建議解決方案:
放棄category_id欄位:
動態計算類別位置:
<code class="language-sql">SELECT id, category, ROW_NUMBER() OVER (PARTITION BY category ORDER BY id) AS category_id FROM article;</code>
範例:
<code class="language-sql">INSERT INTO article(category) VALUES ('stackoverflow');</code>
結果:
<code>SELECT * FROM article WHERE category = 'stackoverflow'; +----+-----------+---------+ | id | category | category_id | +----+-----------+---------+ | 10 | stackoverflow | 1 | | 11 | stackoverflow | 2 | +----+-----------+---------+</code>
以上是如何在資料庫中的類別內實現自訂序列自動遞增?的詳細內容。更多資訊請關注PHP中文網其他相關文章!