function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
JapanJapan 

トリガー起動について

トリガーで入力チェック処理を実装して、CSVでの大量データ更新時に

入力チェックをさせようと思っております。

#DBの「入力規則」では実現できないチェックを想定しています。

 

しかし、トリガーは、レコードの数分起動されるのではなく

ある程度、まとまったデータ単位で起動されると聞いています。

 

例えば、100件のデータをインポートする場合は、1回しかトリガーが起動されない。

これだと、トリガーのSOQLのガバナー制約(20回)に引っ掛かり、使い物になりません。

 

1件のデータにつき、1回トリガーが起動される

つまり、トリガーが受け取るデータは常に1件にするような制御方法はないでしょうか?

100件データがあった場合は、100回トリガーが起動されるイメージ。

 

また、上記の手法を実現する場合にトリガー以外で実装できる方法をご存じの方がいたら

ご教授いただけないでしょうか?

 

よろしくお願いいたします。

Best Answer chosen by Admin (Salesforce Developers) 
JapanJapan

ikou  さん

 

ご回答ありがとうございます。

教えて頂いた方法でなんとか実現出来そうです。

 

ここのサイトの開発は、情報が少なすぎで開発に苦労していたので助かります。

本当にありがとうございました。

All Answers

ikouikou

Triggerを必ず「1レコード単位で起動」とする方法は知りませんが、インポート時にバッチサイズを1にすることで

ご希望のことができると思います。

 

データローダーであればメニューのsettingsの中に「batch size」の項目があったはずです。

デフォルトは200になっているので、そこを1にしてください。

 

ただ、当然のことながら負荷がかかり処理が遅くなるとは思います。

JapanJapan

ikou  さん

 

ご回答ありがとうございます。

教えて頂いた方法でなんとか実現出来そうです。

 

ここのサイトの開発は、情報が少なすぎで開発に苦労していたので助かります。

本当にありがとうございました。

This was selected as the best answer
ikouikou

まぁ、Trigger側でガバナーの制限にかからないよう設計するのが一番なんですけどね。