2012-04-18 15 views
3

次のことを行うDB2 SQL文を試してみたいと考えていますが、これが許可されていれば とは分かりません。両方のパラメータとselect文を使用したSQL insert文の作成

私は、insert into tableA (...) Values (?,?,?,...)
に可能であり、これらのパラメータに値を割り当てることを知っています。?

パラメータの1つの値を事前定義することはできますか。

たとえば、挿入しようとしている列の1つがID columnで、select max(id) + 1 from tableAのようにしたいと考えています。

これは私が得ようとしているものです - この構文はdb2で可能ですか?

insert into tableA (ID, Text1, Text2) VALUES (select max(id)+1 from tableA, ?, ?) 

とにかく助けていただければ幸いです。

ありがとうございます!

+0

あなたが自動生成された主キーを使用したくないだろう、なぜ私は好奇心? 'CREATE TABLE mytable(ID INTEGERは常にIDENTITY PRIMARY KEYとして生成されています、...)' – dasblinkenlight

+0

テーブルの作成方法は制御できませんでしたが、ポインタがありがとう! – aggietech

答えて

3

これは著作必要があります。

insert into tableA values((select max(id)+1 from tableA),'text1','text') 
+0

これはうまくいくようでした - ありがとう! – aggietech

+1

スレッドセーフではないサウンド – bbozo

0

テーブルのインデックスとしてプライマリキーが必要なようです。

db2 alter table tableA add primary key (id) 

これにより、新しいレコードを追加するときに自動的にインクリメントする列がテーブルに作成されます。 ソース(http://www.ibm.com/developerworks/data/library/techarticle/dm-0401melnyk/

+0

はい - これは私の質問に答えるための方法の一つですが、もう一方の方法は値とパラメータを混在/一致させる方法ですか? – aggietech

+1

DB2では、INSERTはVALUES引数またはSELECTをとることができますが、1つのクエリで両方を使用することはできません。 http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fsqlp% 2Frbafymultrow.htm – graypay

0

またOVERRIDING USER VALUEパラメータを使用して試すことができます:

INSERT INTO TableA 
OVERRIDING USER VALUE 
SELECT 0,Text1, Text2 
From TableB 
関連する問題