SQL-Serverの自動採番(IDENTITY値)の取得・リセット

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

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

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

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



まず、テストテーブルBに1件データを挿入します。 「ID」は自動採番の設定なので登録する値は設定しません。

  1. INSERT INTO TABLE_B (DATA1, DATA2)  
  2. VALUES('A0001', 'B0001')  

■自動採番された値を取得
この直後に、設定された「ID」値を取得するには以下のSELECT文を実行します。

  1. SELECT IDENT_CURRENT('TABLE_B') AS LASTID  

結果として「1」という値が返されます。

■自動採番された値をリセット
デバッグ途中でテーブルのデータを全て削除して、さらに自動採番が「1」からにしたい場合はよくあります。 そのときに以下の命令をクエリアナライザ等で実行します。

  1. DBCC CHECKIDENT('TABLE_B', RESEED, 0)  

自動採番の値を「0」にする命令ですが、実際INSERT実行時には+1された値が「ID」に設定されます。

 

posted on 2016-03-22 15:04  混吃等死hcds  阅读(1630)  评论(0编辑  收藏  举报