Skip to Content

unique 規則

unique 為一至三個欄位建立不可重複的複合鍵。典型用途是訂單編號,或「公司 + 外部系統 ID」的組合。它由資料庫層約束,可處理兩個請求同時通過前端檢查的競態。

Payload

{ "type": "unique", "name": "同一客戶的訂單編號不可重複", "columns": ["客戶", "訂單編號"], "case_insensitive": true }

columns 可包含 stored scalar,或 cardinality 為 one 的 link;不可使用 computed column 或 cardinality many 的 link。每條規則最多三個 component,一張表最多五條 unique 規則。

case_insensitive: true 適合不區分大小寫的文字識別碼。若大小寫是業務資料的一部分,請明確設為 false

空值與更新

唯一鍵以正規化後的持久化值判斷。Create、update 與 restore 都可能碰到既有鍵;delete 會釋放該列占用的鍵。不要先做「查詢後再寫入」並假設結果仍有效,應直接處理伺服器回傳的 unique conflict。

Note unique 是無條件 SQL 約束,因此不接受有效的 when。如果只有某些狀態需要唯一性,應重新檢視資料模型,而不是在前端模擬條件式唯一鍵。

發布時保留既有 rule_<hex> ID,讓規則與底層 constraint 的對應保持穩定。端點流程見 rules.getrules.set

Last updated on