複数レコードを一括挿入する
課題
INSERT文で複数レコードをテーブルに一括挿入する。
1レコード挿入するごとにINSERT文を1文書くのも大変なので、まとめて挿入したい。
実行
実行環境はSQL Server 2008 R2 Express. あとManagement Studio.
サンプル・データ
ID | Name | Price |
---|---|---|
1 | apple | 100 |
2 | apple | 120 |
3 | orange | 50 |
4 | orange | 40 |
5 | apple | 80 |
6 | orange | 60 |
7 | banana | 120 |
8 | banana | 150 |
前回で使ったテーブルと同じ。
INSERT文
INSERT INTO [fruits] ( [Name] , [Price] ) VALUES ( 'cherry', 200 ) , ( 'cherry', 300 ) , ( 'pineapple', 250 ) , ( 'pineapple', 280 ) , ( 'banana', 90 );
挿入結果
ID | Name | Price |
---|---|---|
1 | apple | 100 |
2 | apple | 120 |
3 | orange | 50 |
4 | orange | 40 |
5 | apple | 80 |
6 | orange | 60 |
7 | banana | 120 |
8 | banana | 150 |
9 | cherry | 200 |
10 | cherry | 300 |
11 | pineapple | 250 |
12 | pineapple | 280 |
13 | banana | 90 |
IDが9以降のレコードが挿入したデータ。
エラー時の実行結果
次のようなエラーが発生するINSERT文を実行すると、レコードは1つも挿入されない。
USE [TestDB] GO INSERT INTO [fruits] ( [Name] , [Price] ) VALUES ( 'water', 80 ) , ( 'heart', 'priceless' ); -- Priceはint型.
メッセージ 245、レベル 16、状態 1、行 2 varchar の値 'priceless' をデータ型 int に変換できませんでした。
評価
挿入したい複数レコードのうち、1つでもエラーが発生したらどのレコードも挿入しないっていう場面に使おうかな。