前提
ORACLEで複数のレコードをINSERTしたいのですが、以下のクエリを実行したら一意制約エラーが出てしまいました。
(INSERT先「TABLE_01」のプライマリーキーは、COL_01列と固定値が入る列からなります)
SELECT文結果のCOL_01列は一意になっており、固定値もINSERT先には存在しない値なので、問題ないように思えるのですが…
解決策として、
INSERT INTO TABLE_01
SELECT
table2.COL_01, table2.COL_02 ,table2.COL_03, '固定値1'
FROM TABLE_02
INNER JOIN TABLE_01 table1 ON (
table2.COL_01= table1.COL_01
)
GROUP BY table2.COL_01, table2.COL_02 ,table2.COL_03
を固定値の数だけ実行し続けるというのが浮かびましたが、いかんせん固定値の種類が大量にある上に実際のSELECT文はもっと長いので、無駄がある気がしています。
実現したいこと
一意制約エラーを解消した上で、なるべくすっきりとしたクエリでINSERT文を実行したいです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
ORA-00001: unique constraint (プライマリーキー名) violated
該当のソースコード
ORACLE
1INSERT ALL 2INTO TABLE_01 VALUES (COL_01, COL_02, COL_03, '固定値1') 3INTO TABLE_01 VALUES (COL_01, COL_02, COL_03, '固定値2') 4SELECT 5 table2.COL_01, table2.COL_02 ,table2.COL_03 6FROM 7 TABLE_02 table2 8INNER JOIN TABLE_01 table1 ON ( 9 table2.COL_01= table1.COL_01 10) 11GROUP BY table2.COL_01, table2.COL_02 ,table2.COL_03
試したこと
TABLE_01と同構造でプライマリーキーを持たないテーブルに対しては正常に動作しました。

回答2件
あなたの回答
tips
プレビュー