- PR -

INSERTステートメントのVALUES句にSELECTステートメント

1
投稿者投稿内容
レッドマニア
会議室デビュー日: 2005/06/15
投稿数: 1
投稿日時: 2005-06-15 11:17
DBMS:SQLSERVER2000

・サンプル
テーブル1{
カラムA smallint
カラムB varchar
カラムC varchar



用件:テーブル1に値を挿入する際、カラムAは常にMAX+1を指定したい。
前提:テーブルの設定上、オートインクリメントはされていない。
   テーブルの設定は変えない。
   SQLは最小で実行したい。(1文にて)

 
現状は、SELECTでMAX+1を取得し、その値をINSERTに使用するようにしています。
しかし、システムの問題により、テーブルのロックなどをかけていない為、負荷をかけた場合にプライマリーキーの重複が発生していしまいます。
ちなみに、トランザクションも、フレームワーク上のみで管理されているので、意図的に操作ができません。

自分で調査した範囲では、SQLSERVER6.0、6.5まではINSERTステートメントのVALUES句にSELECTステートメントを指定できたようなのですが、2000では推奨されていない(使用できない)ようです。
これに変わる方法がありましたら、教えてくださいませ。
1

スキルアップ/キャリアアップ(JOB@IT)