人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ASP+SQLserver2000にて、構築しております。
レコードを挿入した直後に、最後に挿入したレコードのID(IDENTITY)を取得したいのですが、どのようにすれば良いでしょうか?

MySQLだと、LAST_INSERT_ID() 関数というのがあるようなのですが・・・。

●質問者: ebagos
●カテゴリ:コンピュータ
✍キーワード:ASP MySQL レコード 関数
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ちゃぼりん
●25ポイント

http://msdn2.microsoft.com/ja-jp/library/ms190315.aspx

SCOPE_IDENTITY (Transact-SQL)

SCOPE_IDENTITY

または、

@@IDENTITYを使います。

http://sonic64.com/2005-05-23.html

IDENT_CURRENT / @@IDENTITY / SCOPE_IDENTITY の違い

ここに詳細な使用法の説明が書いてありますのでご参照まで。

◎質問者からの返答

ありがとうございます。

スキル不足で申し訳ないのですが、使用法を見てもいまいち、よく分かりません.

ASPでの、具体的な使用例を教えてください。

よろしく、お願い致します。


2 ● ちゃぼりん
●50ポイント

http://www.hatena.ne.jp/

はてな

それでは責任持って・・・


ASPの場合はこうです:


別にCREATE TABLE文でTableを作っておきます:

CREATE TABLE AUTOINS (

ID_AUTO int IDENTITY (1, 1) NOT NULL ,

COLUMN1 varchar(50) NULL

)


次にASPでは下記のように取得します。


’----

Option Explicit

Dim db ’ADODB.Connection

Dim rs ’ADODB.Recordset

Dim strSQL ’SQL

Dim LastID ’最後に挿入したIDを入れる編数


’--DBのオープン

Set db = Server.CreateObject(”ADODB.Connection”)

db.open ([接続文字列]) ’--DBのオープン


’-- トランザクションの開始

db.begintrans


’-- テーブルの挿入

strSQL=”INSERT INTO AUTOINS (COLUMN1) VALUES (’TEST’)”

db.execute strSQL


’-- 最終IDの取得

strSQL = ”SELECT SCOPE_IDENTITY() as scope”

Set rs = Server.CreateObject(”ADODB.Recordset”)

Call rs.open(strSQL, db, 1, 0)

LastID = rs.fields(”scope”).value

rs.close

Set rs = Nothing


Response.write (”最後に挿入したID=” & LastID)


’-- Transactionのコミット

db.committran


’-- DBのクローズ

db.close

Set db = Nothing

’----


ポイントは、同じトランザクション内で取得することです。

(一番安全確実)


このコードは実際に動かしてるわけでないので、エラー等あったらすいません。

# あー現実逃避の極み...

◎質問者からの返答

詳細な説明を頂きありがとうございました!

解決致しました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ