この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

delete()

組織のデータから 1 つ以上のレコードを削除します。

構文

1DeleteResult[] = connection.delete(ID[] ids);

使用方法

delete() を使用して、個別の取引先や取引先責任者など、組織のデータ内にある 1 つ以上の既存レコードを削除します。delete() コールは SQL の DELETE ステートメントに類似しています。

ルールとガイドライン

オブジェクトを削除する際は、次のルールやガイドラインを考慮する必要があります。

  • 指定したオブジェクト内の個別のオブジェクトを削除するには、クライアントアプリケーションは、実行に十分なアクセス権限でログインする必要があります。詳細は、「データアクセスに影響する要素」を参照してください。
  • また、オブジェクトの親オブジェクトへのアクセス権限も必要となる場合があります。特別なアクセス要件については、「標準オブジェクト」のオブジェクトの説明を参照してください。
  • 参照整合性を確実にするために、delete() コールは、カスケード削除をサポートします。親オブジェクトを削除すると、各子オブジェクトが削除可能な場合は自動的に削除されます。たとえば、Case を削除すると、API はケースに関連付けられたすべての CaseCommentCaseHistory および CaseSolution オブジェクトを自動的に削除します。ただし、CaseComment が削除可能でない場合、または現在使用中の場合、親 Case オブジェクトの delete() コールは失敗します。
  • 特定のオブジェクトは、API からは削除できません。delete() コールを使用してオブジェクトを削除するには、オブジェクトを削除可能に設定する (deletabletrue にする) 必要があります。指定されたオブジェクトが削除可能かどうかを確認するには、クライアントアプリケーションでオブジェクトに対する describeSObjects() コールを実行し、deletable プロパティを確認します。
  • 複数のオブジェクト種別のレコードは、いずれかのオブジェクト種別が Salesforce の [設定] 領域の機能に関連していると、1 回のコールで削除することはできません。唯一の例外は次のオブジェクトです。
    • カスタム設定のオブジェクト。カスタムオブジェクトに類似しています。詳細は、Salesforce オンラインヘルプの「カスタムデータセットの作成」を参照してください。
    • GroupMember
    • Group
    • User

エラー時のロールバック

AllOrNoneHeader ヘッダーを使用すると、すべてのレコードが正常に処理されない限り、すべての変更をロールバックできます。このヘッダーは、API バージョン 20.0 以降で使用できます。正常に処理されないレコードがあった場合に、コールですべての変更をロールバックできます。

レコード削除の基本手順

レコードは、次の基本手順に従って削除します。

  1. 削除する各レコードの ID を確認します。たとえば、query() を特定の検索条件に基づいてコールし、削除するレコードのセットを取得します。
  2. ID[] 配列を作成し、削除する各オブジェクトの ID を入力します。同じコールで、複数のオブジェクト種別の ID を指定できます。たとえば、個別の Account の ID と個別の Contact の ID を同じ配列で指定できます。ID についての詳細は、「ID データ型」を参照してください。
  3. delete() をコールし ID[] 配列を渡します。
  4. DeleteResult[] の結果を処理してレコードの削除が成功したかどうかを確認します。

サンプルコード —Java

このサンプルでは、レコード ID に基づいてレコードを削除する方法を示します。このサンプルのメソッドは、ID の配列を受け取ります。この ID の配列を delete() コールに渡し、コールを実行します。次に、その結果を解析し、削除されたレコードの ID をコンソールに書き込むか、削除が失敗した場合は最初に返されるエラーを書き込みます。

1public void deleteRecords(String[] ids) {
2   try {
3      DeleteResult[] deleteResults = connection.delete(ids);
4      for (int i = 0; i < deleteResults.length; i++) {
5         DeleteResult deleteResult = deleteResults[i];
6         if (deleteResult.isSuccess()) {
7            System.out
8                  .println("Deleted Record ID: " + deleteResult.getId());
9         } else {
10            // Handle the errors.
11            // We just print the first error out for sample purposes.
12            Error[] errors = deleteResult.getErrors();
13            if (errors.length > 0) {
14               System.out.println("Error: could not delete " + "Record ID "
15                     + deleteResult.getId() + ".");
16               System.out.println("   The error reported was: ("
17                     + errors[0].getStatusCode() + ") "
18                     + errors[0].getMessage() + "\n");
19            }
20         }
21      }
22   } catch (ConnectionException ce) {
23      ce.printStackTrace();
24   }
25}

サンプルコード —C#

このサンプルでは、レコード ID に基づいてレコードを削除する方法を示します。このサンプルのメソッドは、ID の配列を受け取ります。この ID の配列を delete() コールに渡し、コールを実行します。次に、その結果を解析し、削除されたレコードの ID をコンソールに書き込むか、削除が失敗した場合は最初に返されるエラーを書き込みます。

1public void deleteRecords(String[] ids)
2{
3   try
4   {
5      DeleteResult[] deleteResults = binding.delete(ids);
6      for (int i = 0; i < deleteResults.Length; i++)
7      {
8         DeleteResult deleteResult = deleteResults[i];
9         if (deleteResult.success)
10         {
11            Console.WriteLine("Deleted Record ID: " + deleteResult.id);
12         }
13         else
14         {
15            // Handle the errors.
16            // We just print the first error out for sample purposes.
17            Error[] errors = deleteResult.errors;
18            if (errors.Length > 0)
19            {
20               Console.WriteLine("Error: could not delete " + "Record ID "
21                     + deleteResult.id + ".");
22               Console.WriteLine("   The error reported was: ("
23                     + errors[0].statusCode + ") "
24                     + errors[0].message + "\n");
25            }
26         }
27      }
28   }
29   catch (SoapException e)
30   {
31      Console.WriteLine("An unexpected error has occurred: " +
32                              e.Message + "\n" + e.StackTrace);
33   }
34}

引数

名前 説明
ids ID[] 削除するオブジェクトに関連付けられた 1 つ以上の ID の配列。バージョン 7.0 以降では、最大 200 個のオブジェクト ID を delete() コールに渡すことができます。バージョン 6.0 以前では、最大値は 2,000 個です。

応答

DeleteResult[]

UnexpectedErrorFault