MENU
Abo
某SIer勤務。
新卒文系からエンジニア就職。
日々の学びをつらつらと書いています。
保有資格:
Salesforce認定アドミニストレーター  
Salesforce認定Platformデベロッパー
Salesforce認定上級Platformデベロッパー
カテゴリー
アーカイブ

【Salesforce】All Rowsで削除済みレコードを取得【SOQL】

削除したレコードを参照したい!という時にはSOQLに「All Rows」を追加すれば取得できるということで、自分でも確認してみました。

目次

分かったこと

まずいろいろ試してみてわかったことがこちら。

  • 「All Rows」を追加したSOQLは開発者コンソールのクエリエディタでは使用できない
  • 「ごみ箱」から削除したデータも取得できる(削除したてなら?)

開発者コンソールのクエリエディタでは「All Rows」は使えないんですね。
クエリを実行したら「unknown error」が出てしまいました。。。

となると、実際の処理の中で使用するしかないってことっぽいですね。

そこで今回は、開発者コンソールの「Anonymous Window(匿名ウィンドウ)」を使用して確認してみました。

All Rowsを匿名ウィンドウで使ってみた

「Anonymous Window」 は開発者コンソールの上部にある「Debug」タブから開けます。(Ctrl + Eでも開けます。)

ウィンドウを開いたら以下コードを入力します。

List<Account> accList = new List<Account>();
accList = [select Id, Name, isDeleted From Account all rows];
for(Account acc: accList){
    system.debug(acc); 
}

そして、デバッグログが吐き出されるように、「Open Log」にチェックを入れ「Execute」で実行します。

ログを確認すると、

isDeleted = trueのレコードが削除されたデータです。falseのレコードは現存するデータですね。

ということで、「All Rows」を使用すると、削除されたレコードも削除されていないレコードも全部取得できるわけですね。

「ごみ箱」からデータを削除して検証

「All Rows」で削除されたレコード情報も取得できることは確認できましたが、削除されたレコードを「ごみ箱」から消した場合、それでもなお「All Rows」でそのデータを取得できるのかきになったので検証してみました。

先ほど取得したデータにあった「企業C」という削除済みレコードを「ごみ箱」から完全に削除します。

そして、先ほどと同じように匿名ウィンドウを使用してレコードを取得し、そのログを確認してみます。

企業Cのデータも依然として取得できていますね。

「ごみ箱」から完全に削除されたとはいえ、どこかにデータが残っているということなんでしょうね。(どこかはわかりませんが。。。)

とはいえ、いつかはきれいさっぱり削除されてしまうデータなので一週間後も、二週間後も参照できるかは疑わしいところですね。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某SIer勤務。
新卒文系からエンジニア就職。
日々の学びをつらつらと書いています。
保有資格:Salesforce認定アドミニストレーター
     Salesforce認定Platformデベロッパー
     Salesforce認定上級Platformデベロッパー

コメント

コメントする

CAPTCHA


目次