はじめに
OutSystemsでの開発において、エンティティを作成する際にAutonumber機能は非常に便利で利用する人も多いかと思います。
しかし、実際に使用してみて「あれ?」と思うことがあったため、その事象について紹介します。
動作環境
- OutSystemsのバージョン 11
- Oracle
事象
OutSystemsのAutonumberは、基本的に新しいレコードが作成されるたびに一意の番号を自動的に付与します。
しかし、実際にアプリケーションを運用していると、新規データの挿入時に番号が連続しない現象が発生しました。
下記の例では、下から順にレコードを挿入したにも関わらず、飛び飛びの番号が割り当てられてしまいました。
この現象についてOutSystemsのforumを確認したところ、Autonumberは一意性の保証されるが、連続性は保証されないとのことでした。
おわりに
Autonumberが連続しないという問題は、トランザクションのロールバックや並行処理、非同期処理の影響を受けるため、トランザクションの管理を適切に行うことで最小限に抑えることはできます。
ただし、OutSystemsの内部処理に依存している部分も多く、完全に回避することは難しいです。
そのため、登録順にレコードを表示したい場合などがある場合は、Autonumberを使用したIdでソートするのではなく、別の属性を用意して対応することが良さそうです。
参考記事