not_exists 規則
not_exists 是 exists 的反向契約:另一張表不得存在任何符合列。常見用途是「仍有未結工單時不可結案」或「已有生效取消紀錄時不可再次取消」。
Payload
{
"type": "not_exists",
"name": "有未結工單時不可關閉客戶",
"table_id": "33333333-3333-4333-8333-333333333333",
"match": {
"客戶": "$same"
},
"where": [
{ "column": "狀態", "op": "in", "value": ["待處理", "處理中"] }
],
"when": [
{ "column": "狀態", "op": "eq", "value": "已關閉" }
]
}table_id、match、where 與 $row.<欄位> 的 shape 和 exists 完全相同;差別只在結果:搜尋結果為零筆才通過。
避免過寬的禁止條件
先把業務狀態放進 where,再決定是否需要 when。省略 where 會把所有關聯列都視為阻擋者,可能讓已封存或已取消資料永久阻止操作。現在列的 match link 缺值時仍豁免;必要性應由另一條規則表達。
預覽與發布分別使用 rules.preview 和 rules.set。UI 顯示違規時,建議把規則 name 轉成可操作訊息,而不是只顯示目標表 ID。
Last updated on