私はカスタムオブジェクトを持っています。月をc、プロジェクト _c、連絡先_ c、ロール _cなどのフィールドの組み合わせがあり、レコードが一意であると判断されます。カスタムオブジェクトの重複レコードを防止する
挿入前にトリガーを書き込んで、同じ組み合わせのレコードが既に存在するかどうかを確認できます。私が尋ねたい質問は
どのように挿入を止めることができますか?レコードがすでに見つかったらレコードを挿入しないでください。それはエラーを表示/表示する必要はありません。
おかげ
Prady
私はカスタムオブジェクトを持っています。月をc、プロジェクト _c、連絡先_ c、ロール _cなどのフィールドの組み合わせがあり、レコードが一意であると判断されます。カスタムオブジェクトの重複レコードを防止する
挿入前にトリガーを書き込んで、同じ組み合わせのレコードが既に存在するかどうかを確認できます。私が尋ねたい質問は
どのように挿入を止めることができますか?レコードがすでに見つかったらレコードを挿入しないでください。それはエラーを表示/表示する必要はありません。
おかげ
Prady
他の人が(一般に非コードソリューションは、システムのエンドユーザーのために、より柔軟性があり)、より良いソリューションでこれに答えたが、答えはから特定のレコードを停止しますそのレコードのフィールドにエラーを追加することです。例えば
、私はアカウントを挿入した場合、私はこのようなものかもしれません:
別の方法としては、Exception
を拡張するクラスを作成し、その例外クラスの新しいインスタンスをスローすることで、これは防ぐことができますトリガーに渡されたすべてのレコードは、特定のレコードとは対照的に処理されません。
は、私は、Salesforceで似たような状況があります。これは、一意性を保証するために必要なすべての値(あなたの場合はmonth_c、Project_c、contact_cおよびrole_c)で構成される値を含むフィールドを作成することによって処理されます。そのフィールドの「一意」チェックボックスをオンにします。重複がゴミ箱に移動するようになりました。
私の場合、この新しいフィールドは外部プログラムによって入力され、Salesforceにプッシュされます。あなたの場合、トリガーの値を入力する必要があります。これはトリガーでSOQLクエリを実行するより効率的だと思いますが、これを確認するためのチェックは行っていません。
数日前、私は非常に便利で簡単な解決策(ForceTree.comの記事)を見て、トリガーを書く必要がないことを発見しました。ワークフロールールとカスタムフィールドを使用して、フィールドを結合して一意性をチェックすることができます。ここで
は、ウォークスルーです: http://www.forcetree.com/2010/07/unique-field-combination-in-salesforce.html