これにより、各テーブルに対してinsertする時と比べてトラフィックが削減できパフォーマンス向上が見込めるのではないかと思います。
例1
各テーブルに対して値を指定して挿入1 insert all 2 into test1 (id, name) values (1, 'name1') 3 into test2 (id, name) values (1, 'name2') 4* select * from dual 2 rows created.
JDBCを使用した場合は、バインド変数を使用して挿入する値を埋め込んであげると良い。
PreparedStatement statement = connection.prepareStatement("INSERT ALL" + " INTO test1 VALUES (?, ?)" + " INTO test2 VALUES (?, ?)" + " SELECT * FROM dual"); statement.setInt(1, 1); statement.setString(2, "あいうえお"); statement.setInt(3, 1); statement.setString(4, "かきくけこ"); int count = statement.executeUpdate();
例2
副問い合わせの結果に応じてinsert先テーブルを切り替えるにはwhen句と組み合わせると良い。1 insert all 2 when mod(id, 2) = 0 then 3 into test1 4 else 5 into test2 6* select id, name from test3 5 rows created.