自動採番列


  MDB ( Access 2000 以降 )




  

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

IDENTITY は COUNTER でも可
最初の 100 は初期値で、次の 10 が増分

以下は変更

  

alter table [自動] 
alter column [社員コード] IDENTITY(500,2)
  

insert 後、自動採番された値を取得するには、@@IDENTITY を使用します

insert into board (board_title) values( NULL );
select @@IDENTITY;


  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 の場合は、特定の有効範囲に限定されません。

  MySQL

  

create table `自動` (
	`社員コード` BIGINT NOT NULL AUTO_INCREMENT
	,`氏名` VARCHAR(50)
	,primary key(`社員コード`)
)

または

create table `自動` (
	`社員コード` BIGINT NOT NULL AUTO_INCREMENT UNIQUE
	,`氏名` VARCHAR(50)
)
  

●インデックス付きの AUTO_INCREMENT カラムに NULL(推奨)または 0 を挿入すると、
そのカラムには連続値の次の値が設定される。(それ以外の値では、その値が設定されるので注意)
●通常、これは value+1 になる(value はテーブルに現在格納されているそのカラムの最大値)。
●AUTO_INCREMENT は 1 から開始される
●4.1.0 以降では、`社員コード` SERIAL と記述できる


既存の整数列を AUTO_INCREMENT 化
  

alter table `テーブル名`
   change column `列名`
   `列名` int unsigned not null auto_increment,add index (`列名`)
  

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

insert into board (board_id,board_title) values( NULL, NULL );
select LAST_INSERT_ID();

※ LAST_INSERT_ID() は、接続単位に最後の値を保持します。
※ 単一の INSERT 文を使用して複数のレコードを挿入した場合、LAST_INSERT_ID() は最初に挿入されたレコードの値を返します



  PostgreSQL

  

create table "自動" (
	"社員コード" SERIAL
	,"氏名" VARCHAR(50)
	,primary key("社員コード")
)
  

次の値を挿入するには、デフォルト値を割り当てるよう指定してください。
これは、INSERT文の列リストからその列を除外するか、DEFAULTキーワードを使用することで行ないます

serial は、実際は sequence を作成します。
serial で作成された sequence はテーブルの削除と共に削除されます

  

create sequence "自動_社員コード_seq";
create table "自動" (
	"社員コード" integer DEFAULT nextval('自動_社員コード_seq') NOT NULL
	,"氏名" VARCHAR(50)
	,primary key("社員コード")
)
  
シーケンスの存在の確認は、pg_class で行えます ( relkind = 'S' )。


以下は増分の変更

  

alter sequence 自動_社員コード_seq
	increment 10
  

以下は開始番号の変更

  

alter sequence 自動_社員コード_seq
	restart 100
  


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

insert into "自動" ("氏名") values(NULL);
select lastval();

※ 現在のセッションのnextvalで戻される最新の値を返します。
※ 現在のセッションでnextvalが未だ呼ばれていなければエラーになります。

  Oracle

  

Oracle では テーブルと関連付けた自動番号生成はできません。

sequence を作成して、insert 文の values 句に シーケンス名.nextval として
使用する事になります
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[dbaccess]
claudebot
24/03/29 08:32:10
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube