自動採番列


  SQLServer



  
create table [自動] (
	[社員コード] int IDENTITY(100,10)
	,[氏名] VARCHAR(50)
	,primary key([社員コード])
)
  

MDB と違って、データ型の記述が必要
tinyint、smallint、int、bigint、decimal(p,0)、または numeric(p,0) 列に割り当てることができます

初期値を以下のようにして変更できます

  
DBCC CHECKIDENT ([自動], RESEED, 500)
  

次に作成されるデータは510 です





既存の列を IDENTITY には変更できないようなので、そのような目的の場合には
いくつかパターンがあります。

1) 既存の ID の内容を破棄し、ID 値を持つ列の定義位置が一番最後に変更される。
  
ALTER TABLE [テーブル名]  ADD [新しいID列名] INT IDENTITY;
ALTER TABLE [テーブル名] DROP [元のID列のインデックス名];
ALTER TABLE [テーブル名] DROP COLUMN [元のID列名];
sp_rename 'テーブル名.新しいID列', '元のID列名', 'COLUMN';
  

2) SQLServer 同士で http://winofsql.jp/VA003334/msde060812212122.htm を行う

3) 新しいテーブルを IDENTITY 付きで定義し、SET IDENTITY_INSERT を使用する
SET IDENTITY_INSERT [テーブル名] ON
insert 文で ID 値に明示的に値をセット
SET IDENTITY_INSERT [テーブル名] OFF
※ 同一セッションで実行する事。


insert 後、自動採番された値を取得するには、SCOPE_IDENTITY( ) 関数を使用します

insert into board (board_title) values( NULL );
select SCOPE_IDENTITY( );

SCOPE_IDENTITY と @@IDENTITY は、現在のセッション内の任意のテーブルで生成された最後の ID 値を返します。
ただし、SCOPE_IDENTITY が返す値は、現在の有効範囲の中で挿入された値に限られます。
@@IDENTITY の場合は、特定の有効範囲に限定されません。










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ