Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

生成される自動番号が連続していない時がある

公開日: Oct 13, 2022
説明

自動採番では常に数字が増えていきますが、数字が順番通りに増えていかない場合もあります。

技術的な説明
Salesforce では自動採番で番号が順番どおりに割り振られることが保証されていません。 そのため、1 度に 1 つのオブジェクトを保存するシンプルなケースでさえ、2 つの作成操作を平行して実行することはできないようになっています。 

たとえば、1 つ目の作成操作で自動採番によって 15 が割り振られ、データベースへの保存に失敗したとします。 2 つ目の作成操作が平行して実行されており、開始されても (自動採番で番号として 16 の保存を試行)、15 がないため完了できません。 一般的にこうした状況では 2 つを超えるレコードが関係するため、(たとえば apex トリガーが原因で) 成功した行と失敗した行がある、API を使用した複数オブジェクトの一括保存では状況がさらに複雑になる場合があります。 こうした複雑な操作を平行していずれも実行できない場合、スループットが低下してシステムリソースが利用できなくなります。

そのため、現時点では、自動採番項目で番号が順番どおりに割り振られることよりも、コードのパフォーマンスを維持することを優先しています。

解決策


回避策には多くの労力が必要になる可能性があります。また、Salesforce からレコードを削除する際にこのプロセス (極端なケースのプロセス) に基づいて削除されるか削除されない可能性がある、他の関連レコードをカスタムオブジェクトで参照することが多いため、正確な結果は保証できません。

たとえば、カスタムオブジェクトに 300 件のレコードがあり、最初の 200 件に 1 ~ 200 の番号が振られていて、残りの 100 件には自動採番で 251 ~ 350 の番号が振られているとします。
 

  1. この場合、自動採番項目で番号が割り振られた、番号が飛んでいるすべてのレコード (レコード 251 ~ 350) をエクスポートし、これらを Salesforce から削除します (レコードを削除する前に必ずバックアップを作成すること)。
  2. 自動採番項目をリセットし、最初の未使用の値である 201 から始まるようにします。つまり、Salesforce の末尾のレコードに数字を 1 つ足すことになります (200 +1 = 201)。
  3. 削除したレコードを挿入すると、これらの新規レコードの作成時に番号として 201 ~ 300 が割り振られます。

***繰り返しになりますが、自動採番で番号が順番通りに割り振られることが保証されていないため、すべてのレコードで番号が順番通りになるまでこのプロセスを何度か繰り返す必要がある場合があります。 


関連情報:
「自動採番」項目の再開またはリセット

ナレッジ記事番号

000383836

 
読み込み中
Salesforce Help | Article