LoginSignup
1
3

More than 3 years have passed since last update.

ClassicおよびLightningでのContentDocumentおよびContentDocumentLinkトリガー動作

Posted at

Knowledge Article Number 000312746

次の動作は、レコードに添付されたファイルの削除に適用されます。

・Classicでは、Salesforceは関連するContentDocumentLinkレコードのみを削除し、ContentDocumentレコードは削除しないため、ContentDocumentトリガーは起動しません。

・Lightning Experienceでは、ContentDocumentと関連するContentDocumentLinkレコードの両方が削除されます。仕様上、SalesforceはContentDocumentLinkのトリガーではなく、ContentDocumentのトリガーのみを起動します。

これは設計どおりに機能しており、以下の手順に従って確認できます。

  1. 2つの「削除前」トリガーを作成します。1つはContentDocumentに、もう1つはContenDocumentLinkオブジェクトに作成します。
  2. デバッグログで確認できる「system.debug」ステートメントをそれぞれに配置します。
  3. 次に、「ファイル」関連リストの下の任意のオブジェクトレコードに2つのファイルをアップロードします。完了すると、[ファイル]タブで両方のアップロードされたドキュメントを確認できます。
  4. 開発者コンソールで以下のクエリを実行します。

SELECT Id, LinkedEntityId, ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId=<<Id og the document>>

2つのレコードが返されます

SELECT Id, Title FROM ContentDocument WHERE Id=<<ContentDocumentId from the above query>>

2つのレコードが返されます

  1. デバッグログを設定する
  2. CLASSIC:   
    [ファイル]関連リストの下にあるドキュメントの横にある[削除]リンクをクリックして、アップロードしたファイルの1つを削除します。 観察:
    • デバッグログでは、ContentDocumentLinkTriggerのみが発生し、そのトリガーに存在するDebugステートメントが表示されることがわかります。
    • 削除したドキュメントは、[ファイル]タブに表示されます。
    • 上記の2つのクエリを実行すると、最初のクエリでは1行、2番目のクエリでは2行のみが返されることがわかります。つまり、ContentDocumentLinkのみが削除されます。
  3. LIGHTNING:   オブジェクトレコードを開き、[ファイル]関連リストの下のドキュメントの横にある[削除]リンクをクリックして、2番目にアップロードされたファイルを削除します。 観察:
    • デバッグログでは、ContentDocumentTriggerのみが発生し、そのトリガーに存在するDebugステートメントが表示されることがわかります。
    • 削除したドキュメントは、[ファイル]タブで使用できなくなります
    • 上記の2つのクエリを実行すると、最初のクエリに対して行が返されず、2番目のクエリ(1番目のドキュメントに関連するクエリ)に対して1行が返されないことがわかります。つまり、ContentDocumentとContentDocumentLinkの両方が削除されています。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3