Oracle でも 1回の SQL で複数行 INSERT する

PostgreSQL や MySQL では次のように INSERT 文で 複数行を指定することができます。

psql=# INSERT INTO table1 (field1, field2)
psql-#   VALUES ('xxxxx1', 'xxxxxxxxx')
psql-#        , ('xxxxx2', 'xxxxxxxxx')
psql-#        , ('xxxxx3', 'xxxxxxxxx');

Oracle ではこの書き方ができません。

以下のように書きます。

SQL> INSERT ALL
  2    INTO table1 (field1, field2) VALUES ('xxxxx1', 'xxxxxxxxx')
  3    INTO table1 (field1, field2) VALUES ('xxxxx2', 'xxxxxxxxx')
  4    INTO table1 (field1, field2) VALUES ('xxxxx3', 'xxxxxxxxx')
  5  SELECT * FROM DUAL;

単に INSERT文をまとめただけのようですが この書き方は、異なるテーブルでもまとめることができます。 マルチテーブル・インサート と言うのですが 単に INSERT をまとめるだけではありません。

詳しくは次回。

Google サイト内検索

Amazonアソシエイト