Skip to Content

not_exists 規則

not_existsexists 的反向契約:另一張表不得存在任何符合列。常見用途是「仍有未結工單時不可結案」或「已有生效取消紀錄時不可再次取消」。

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_idmatchwhere$row.<欄位> 的 shape 和 exists 完全相同;差別只在結果:搜尋結果為零筆才通過。

避免過寬的禁止條件

先把業務狀態放進 where,再決定是否需要 when。省略 where 會把所有關聯列都視為阻擋者,可能讓已封存或已取消資料永久阻止操作。現在列的 match link 缺值時仍豁免;必要性應由另一條規則表達。

預覽與發布分別使用 rules.previewrules.set。UI 顯示違規時,建議把規則 name 轉成可操作訊息,而不是只顯示目標表 ID。

Last updated on