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.get 與 rules.set。
Last updated on