跳到內容

Trigger 生命週期與 immutable update

User-visible lifecycle 區分 activepausedcancelleddeletedfiring 是暫時的 conflict state。set_enabled(false) 把符合條件的規則變成 paused,set_enabled(true) 恢復 active。cancelled 會停止未來正常 fires,但保留 cancellation history;deleted 是不同的 tombstone,不等於 cancelled。

update_trigger 在同一 transaction 採 immutable append:舊 row 以 system:replaced 取消,再插入新的 active row。response triggerId 與 request ID 不同;新 row 的 replacesTriggerId 指回舊 ID,lineage 也可顯示 replacedByTriggerId。所有後續操作都必須改用回傳的新 ID。

input enabled 只為 backward compatibility,會被忽略。replacement 一律先 active;若要維持 paused,update 成功後再呼叫 set_enabled(newTriggerId, false)。已 cancelled 的 trigger 再 cancel 是 idempotent success,但 deleted row 不得假裝 cancel 成功。firing 或 terminal 狀態的 update/cancel conflict 依 shared runtime contract。cancel 與 deprecated delete 需要 confirmation;update 與 set-enabled 不需要。

arinova.trigger.get_trigger, arinova.trigger.update_trigger, arinova.trigger.set_enabled, arinova.trigger.cancel_trigger, arinova.trigger.delete_trigger

Also known as

暫停 Trigger, 恢復 Trigger, immutable update, 新 triggerId, replacesTriggerId, system replaced


Machine-readable Markdown · Knowledge index

Build a7f47a5ca54ddcf7806cd48b81ce1b9827042766