【Salesforce】Database.mergeについて
Salesforceでありそうな仕事の中に、重複する顧客のマージというものがあるかと思います。
標準機能にもマージ機能がありますが、あれをApex上で行うことが可能なようです。
マージが可能なオブジェクトは、取引先、取引先責任者、リードのみだそうです。
上のURLでDatabaseクラスを見てみると、mergeメソッドがありますね。8個もあります。
引数1 | 引数2 | 引数3 |
---|---|---|
masterRecord | duplicateId | |
masterRecord | duplicateRecord | |
masterRecord | duplicateIds | |
masterRecord | duplicateRecords | |
masterRecord | duplicateId | allOrNone |
masterRecord | duplicateRecord | allOrNone |
masterRecord | duplicateIds | allOrNone |
masterRecord | duplicateRecords | allOrNone |
すべて「Database.merge」です。
「masterRecord」に「duplicateRecord」をマージする形になります。
「duplicateRecord」はリストにすることもできますが、リストサイズは2までとのことです。
「duplicateId」は「duplicateRecord」のIDですね。こちらもリストにすることもできますが、同じようにリストサイズは2までのようです。
「allOrNone」は他のDatabaseクラスで使用するDMLにもありますね。
DMLでエラーが発生したときの動作を指定することができます。
たくさんありますが、並べてみると簡単ですね。
実際に実行してみました。
マスタレコードと
重複レコードです。
開発者コンソールでこのような処理を書いて実行しました。
// マスタレコード Account master = [select id from Account where Id = '{マスタレコードID}']; // 重複レコード Account slave = [select id from Account where Id = '{重複レコードID}']; // マージ処理 Database.merge(master, slave);
重複レコードは削除されましたが、マスタレコードの更新時間が更新されていました。
重複するレコードをリストにしてマージする場合には、リストサイズに注意しなければいけませんね。
No comments.