1

SQLサーバー(2012)を使用して、テーブルがあります-列のあるTABLE_A

(id, name, category, type, reference)

id - 主キーであり、次に使用可能な主 ID を保持する別個のテーブル (table_ID) によって制御されます。通常、挿入はアプリケーション側 (Java) から行われ、挿入のたびにこの ID が次の ID に更新されます。(EJBを介して、または手動などで)しかし、ストアドプロシージャ(Javaアプリケーションから呼び出される)を書きたいと思います

- finds records in this table where (for example) reference = 'AAA' (passed as 
  parameter)
- Once multiple records found (all with same reference 'AAA', I want it to INSERT new 
  records with new ID's and reference = 'BBB', and other columns (name, category, type) 
  being same as in the found list.

これに似たクエリを考えています

INSERT INTO table_A
       (ID
       ,NAME
       ,CATEGORY
       ,TYPE, 
       ,Reference)
 VALUES
       (
         **//current_nextID,**
         (select NAME
          from TABLE_A
          where REFENCE in (/*query returning value 'AAA' */),
          (select CATEGORY
          from TABLE_A
          where REFENCE in (/*query returning value 'AAA' */),
          (select TYPE
          from TABLE_A
          where REFENCE in (/*query returning value 'AAA' */),
          'BBB - NEW REFERENCE VALUE BE USED'
          )

挿入するレコードの数がわからないため、基準クエリの結果セットに含まれる項目の数です。

 select /*field */
          from TABLE_A
          where REFENCE in (/*query returning value 'AAA' */),

すべてのレコードで ID の値を計算する方法がわかりません。誰でも何か提案できますか?

4

1 に答える 1