getDeleted()を使用すると削除されたレコードのリストを取得できるということを知りましたので、使い方をさらっと共有。
目次
getDeleted()の概要
getDeleted()は、getDeletedResultオブジェクトを取得し、このオブジェクトに含まれるDeletedRecordオブジェクトの配列には、削除された各レコードの ID と、削除された日時 (協定世界時 (UTC) タイムゾーン) が入っています。
つまりどういうことかというと、getDeleted()で取得できる情報は以下ということです。
getDeleted()で取得できる情報
- 削除されたレコードの ID
- 削除された日時 (協定世界時 (UTC) タイムゾーン)
削除レコードの各項目値がとれるわけではないので、ログと監査が大きな役割ですかね。
あとは、商談チームメンバーなど削除されてもゴミ箱にはいらないデータも取得できるってのはGoodポイント。
getDeleted()の使い方
getDeleted()は次のような構文で使用します。
Database.getDeleted(string sObjectType, dateTime startDate, dateTime EndDate);
startDate は、endDateの値より1分以上過去の日時でなければなりません。また、startDate は、endDate以降の値にすることはできません。
// 検索対象のオブジェクトタイプ
String objectType = 'Opportunity';
// 開始日時と終了日時
Datetime startDate = Datetime.now().addDays(-3); // 3日前からの削除レコードを対象とする例
Datetime endDate = Datetime.now(); // 現在までの削除レコードを対象とする例
// 削除されたレコードを取得する
Database.GetDeletedResult deletedRecords = Database.getDeleted(objectType, startDate, endDate);
// 削除されたレコードの処理
if (deletedRecords != null && deletedRecords.getDeletedRecords() != null) {
for (Database.DeletedRecord record : deletedRecords.getDeletedRecords()) {
System.debug('Deleted Record Id: ' + record.getId());
System.debug('Deleted Date: ' + record.getDeletedDate());
}
}
おまけ
ごみ箱内にある削除レコードの取得にはSOQLのALL ROWSを使いましょ。
あわせて読みたい


【Salesforce】All Rowsで削除済みレコードを取得【SOQL】
削除したレコードを参照したい!という時にはSOQLに「All Rows」を追加すれば取得できるということで、自分でも確認してみました。 All Rowsの特徴 いろいろ検証して分…
コメント