Loading
以程式碼增強 Salesforce
定義 Apex 觸發

定義 Apex 觸發

使用觸發可以叫用 Apex 程式碼。Apex 觸發可以在變更 Salesforce 記錄 (例如插入、更新、刪除) 的前後進行設定以執行自訂動作。

必要版本

提供版本:Salesforce Classic (並非所有組織皆適用) 和 Lightning Experience

提供版本:PerformanceUnlimitedDeveloperEnterpriseDatabase.com Edition

您無法在 Database.com 中使用標準物件、行銷活動、個案及電子郵件。

需要的使用者權限
若要定義 Apex 觸發: Author Apex

Apex 觸發會在與其相關聯之物件下的應用程式中儲存為中繼資料。

只有在 Developer Edition 組織、Salesforce Enterprise Edition 試用組織或 Sandbox 組織中,您才可以使用 Salesforce 使用者介面新增、編輯或刪除 Apex。在 Salesforce 生產組織中,您只能使用中繼資料 API deploy 呼叫、Salesforce Extensions for Visual Studio Code 或 Ant 移轉工具來變更 Apex。Salesforce Extensions for Visual Studio Code 與 Ant 移轉工具是 Salesforce 提供以支援使用者和合作夥伴的免費資源,不屬於 Salesforce 主要服務契約中關於我方所提供服務的一部分。

  1. 進入您要存取其觸發之物件的物件管理設定,移至「觸發」。對於附件、ContentDocument 和備註的標準物件,您無法在 Salesforce 使用者介面中建立觸發。針對這些物件,使用開發工具 (例如 Developer Console 或 Salesforce extensions for Visual Studio Code) 來建立觸發。或者,您也可以使用中繼資料 API。
  2. 按一下「觸發」清單中的「新增」。
  3. 若要指定 Apex 的版本以及與此觸發搭配使用的 API,請按一下「版本設定」。
    如果您的組織已經從 AppExchange 安裝受管理封裝,則您也可以指定與此觸發搭配使用的每個受管理封裝版本。可針對所有版本使用預設值,將觸發與最新版的 Apex 和 API 以及每個受管理封裝相關聯。如果您要存取的元件或功能與最近的封裝版本不相同,則可以指定受管理封裝的早期版本。
  4. 若您想要編譯及啟用觸發,按一下「Apex 觸發」,然後選取「是啟用中」核取方塊。如果您只想將程式碼存在組織的中繼資料中,請取消選取此核取方塊。此核取方塊預設為已啟用。
  5. 在「內文」文字方塊中,輸入觸發的 Apex。單一觸發的長度最多可達 1 百萬個字元。

    若要定義觸發,請使用下列語法:

    trigger TriggerName on ObjectName (trigger_events) {
                         code_block
                         }

    其中 trigger_events 可以是下列一個或多個事件的逗號分隔清單:

    • before insert
    • before update
    • before delete
    • after insert
    • after update
    • after delete
    • after undelete
    備註
    備註
    • 由循環事件或循環工作的 insertdeleteupdate 叫用的觸發會在從 Lightning 平台 API 大量呼叫觸發時導致執行階段錯誤。
    • 假設您使用插入之後或更新之後觸發來變更商機、連絡人或機會的擁有權。如果您使用 API 來變更記錄擁有權,或者如果 Lightning Experience 使用者變更記錄的擁有者,不會傳送電子郵件通知。若要將電子郵件通知傳送給記錄的新擁有者,請將 DMLOptions 中的 triggerUserEmail 內容設定為 true
  6. 按一下「儲存

只要相依中繼資料自上次編譯觸發後未變更,觸發就會以設定為 trueisValid 標記儲存。如果對觸發中使用的物件名稱或欄位進行任何變更,包括物件或欄位描述的編輯等概略變更,則 isValid 標記會設定為 false,直到 Apex 編譯器重新處理程式碼為止。當接下來是執行觸發,或當使用者重新將觸發儲存在中繼資料中時,就會重新編譯觸發。

如果對應欄位參照已刪除的記錄,Salesforce 會依預設清除對應欄位的值。或者,您可以選擇避免處於對應關係的記錄遭到刪除。

所有類別及觸發都必須成功編譯,且每個觸發必須涵蓋一些測試範圍。單元測試必須至少涵蓋您 75% 的 Apex 指令檔,才能將程式碼部署於生產環境。請參閱 Apex 單元測試

 
正在載入
Salesforce Help | Article