salesforceのSOQLで、削除済み、マージ済みのレコードを取得する

salesforceでレコードを削除したり、マージしたりすると、削除されたレコード、マージされて無くなったレコードはゴミ箱に入ります。

通常、SOQLではゴミ箱に入っているレコードは検索対象にならないのですが、以下のようにALL ROWS句を使うと、ゴミ箱も含むすべてのレコードも検索対象となります。なお、ゴミ箱内のレコードを指定するWhere条件には、「IsDeleted = true」を使用します。

System.assertEquals(2, [SELECT COUNT() FROM Contact WHERE AccountId = a.Id ALL ROWS]);

↑ ↑ ↑ 参考(Querying All Records with a SOQL Statement)

なお、ALL ROWSを使ったSOQLはAPEXコード内か、SOAP APIなどのqueryAll()メソッド内で有効で、開発者コンソールから直接SOQLを投げるとエラーになってしまいます。

 

画面からSOQLを指定して簡単に確認するには

そのため、開発者コンソールからSOQLをたたいて簡単に確認したいなーというときには試せません。

そんなときには以前紹介した、Salesforce Workbench(Salesforceのデータを検索・確認できるGUIツール① WorkBench)を使うとクエリの結果に「ゴミ箱のデータを含む/含まない」の指定が画面からできて、便利です。

workbench

 

Workbenchにログインして、画面上部のメニューから「queries」→「SOQL Query」と進むと上記ののような画面になります。

この画面の中央部のテキストエリアにSOQLを入力して「Query」ボタンを押せば結果が表示されるのですが、その結果にゴミ箱およびアーカイブされたデータ(IsDeleted=true または IsArchived=true)のデータも含めるには、「Deleted and archived records:」で「Include」にチェックを入れておきます。

こんな記事も関係あるかも。読んでみてね。

One Response to “salesforceのSOQLで、削除済み、マージ済みのレコードを取得する”

  1. […] からでは確認できず、Apex等を使う必要があるので、簡単に確認する方法については、この記事「salesforceのSOQLで、削除済み、マージ済みのレコードを取得する」を参考にしてください。) […]

コメントを残す

サブコンテンツ

このページの先頭へ