2006/10/28

SQL Server 2005でInsertした瞬間にidentity値を取得

外部キー制約のある2テーブルにレコードをInsertしたい場合、
Insertした瞬間にidentity値を取得したい場合があると思います。
(特にSQL CRL使用時)
その場合はOUTPUT INSERTED.[ID] 構文を用いると、
ExecuteScalar等で比較的楽にidentity値を取得できるのでオススメです。

例:

 INSERT INTO TABLE_A
 OUTPUT INSERTED.TABLE_A_ID
 VALUES (1,2,3)

2 件のコメント:

匿名 さんのコメント...

すいません
executescalarをすると
Insertした行数が返ってくるのですが。
やり方を教えてもらえないですか

vb.net 2005 ado.net sqlserver 2005
express

同期接続

strsql &= insert into table
strsql &= (data)
strsql &= output inserted.id
strsql &= values ('111')

using cmd as new sqldatacmd
cmd.connection = con
cmd.commandtext = strsql

iRet = cmd.executescalar

end using
でiRetにはInsertした行数が
入ります。

ここで、identityをとりたいのですが・

Tadashi Shioi さんのコメント...

>output inserted.id
で、「id」はidentity型なんですよね?

でしたらとれるはずなのですが・・・