開発Blog

Microsoft SqlServer で シーケンステーブルを扱う

投稿日:2022-03-07 更新日:

intra-mart Accel Platform では、SqlServerを利用する場合、JDBCの接続プロパティに selectMethod=cursor を設定します。
この接続プロパティを使用すると、問い合わせの結果セットの行が限定された数だけクライアント( intra-mart Accel Platform )のメモリに保持されます。これにより、大量のデータを保持することがないため、メモリの枯渇などを防止する効果があります。
intra-mart Accel Platform では、 この設定を必ず使用してください。

ただし、この設定により、以下の弊害が発生します。

一般的には、Microsoft SqlServerでシーケンステーブルを利用する場合、以下のSQL文を使用します。

SELECT NEXT VALUE FOR Seq1

TenantDatabase の API や IM-LogicDesigner の SQL定義を利用して、このSQL文を実行すると2回インクリメントされた値が取得されます。
これは、JDBC のメソッドを直接利用した場合でも同様です。

これを回避する方法として、以下のSQL文を利用することで、1回インクリメントされた値が取得できることを確認しています。

シーケンステーブル名がSeq1の場合

SELECT NEXT VALUE FOR Seq1 AS seq_no FROM sys.sequences WHERE name = 'Seq1

FROM句とWHERE句を記述することで、必ず1レコードのみが取得されるようにします。
これで、レコード取得時に1度だけ採番されます。

上記のSQL文は、調査した結果の一例です。

実際に使用される場合は、検証を行い、期待通りの結果となること確認してから、ご利用をお願いします。

-開発Blog

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

intra-mart Advent Calendar 2013 第22日:アナウンス機能について(2013 Winter新機能)

この記事は、intra-mart Advent Calendar 2013 第22日の記事です。 今回は、Accel Platform 2013 Winter(Felicia)からの新機能、アナウンス …

no image

Formaボタンアイテムのクリック時に任意の処理を追加するには

今回のブログ記事では、ボタンアイテムのクリック時に呼び出されるアイテム固有の処理(データの登録・画面遷移など)の前に、入力値の加工など独自の業務処理をスクリプトとして実行する方法を紹介します。 &nb …

no image

カラーパターンの追加

イントラマートには標準で青赤緑灰橙のページカラーパターンが用意されていますが、実はこれを追加することができます。 と、そこまでは皆さんご存知かもしれませんが、実際にカラーパターンを自作して追加されてい …

no image

intra-mart WebPlatform/AppFramework Ver7.2について その3

では、第3回、アクセスセキュリティ関連とポータルの機能追加をご紹介します。 ■アクセスセキュリティ 1. ログイングループ単位でアプリケーションロール数が設定可能になりました。 イントラネット・スター …

no image

「im-J2EE Framework」仕様書

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 技術者向け資料が新しく公開されました …