忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

SQL-Serverの自動採番(IDENTITY値)の取得
システムに必要なテーブルで、自動的に番号を振っていくものが必要なときがあります。 たとえば、各種の伝票データの伝票番号の様なものです。

プログラム処理上、データを登録した直後に、自動採番された値を取得し何かに使いたいことがよくあります。
SQL-Serverでは現在の自動採番の値を取得する方法が用意されています。

取敢えず自動採番を行える簡単なテーブルの例を示します。(前回ストアド・ファンクションで使用したテーブルに細工します。)

CREATE TABLE [dbo].[TABLE_B](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[DATA1] [nvarchar](50) COLLATE Japanese_CI_AS NULL,
	[DATA2] [nvarchar](50) COLLATE Japanese_CI_AS NULL,
 CONSTRAINT [PKEY_TW_MAG_ADDR] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


まず、テストテーブルBに1件データを挿入します。 「ID」は自動採番の設定なので登録する値は設定しません。
INSERT INTO TABLE_B (DATA1, DATA2)
VALUES('A0001', 'B0001')
■自動採番された値を取得
この直後に、設定された「ID」値を取得するには以下のSELECT文を実行します。
SELECT IDENT_CURRENT('TABLE_B') AS LASTID
結果として「1」という値が返されます。

■自動採番された値をリセット
デバッグ途中でテーブルのデータを全て削除して、さらに自動採番が「1」からにしたい場合はよくあります。 そのときに以下の命令をクエリアナライザ等で実行します。
DBCC CHECKIDENT('TABLE_B', RESEED, 0)
自動採番の値を「0」にする命令ですが、実際INSERT実行時には+1された値が「ID」に設定されます。

=====
2013/02/14:の時の情報











PR

コメント

コメントを書く