REPLACE INTO は、意味的には DELETE + INSERT 操作の組み合わせです。プライマリキーが一致する既存の行がある場合はその行を上書きし、一致する行がない場合は新しい行を挿入します。
構文
REPLACE INTO table_name [(column_name,...)] VALUES ({Constant|NULL|DEFAULT},...),(...),...パラメーター
| パラメーター | 説明 |
|---|---|
table_name | 対象テーブル。 |
column_name | (省略可)値を設定するカラム。すべてのカラムに定義順に値を挿入する場合は省略します。 |
Constant|NULL|DEFAULT | 各カラムの値。リテラル定数、NULL、またはカラムの DEFAULT 値のいずれかを指定します。 |
説明
プライマリキーは、単一カラムのプライマリキーでも、複数カラムにまたがる複合プライマリキーでも構いません。
仕組み
REPLACE INTO を実行すると、システムは同じプライマリキーを持つ行がすでに存在するかどうかをチェックします。
行が存在する場合 — システムは既存の行を削除し、新しい行を挿入します。
行が存在しない場合 — システムは行を直接挿入します。
使用例
カラム名を指定して単一行を挿入
REPLACE INTO customer(customer_id,customer_name,phone_num,city_name,sex,id_number,home_address,office_address,age,login_time)
VALUES
(002367,'田中一郎','13900001234','杭州',0,'987300','西湖','クラウドタウン',23,'2018-03-02 10:00:00');カラム名を省略して複数行を挿入
すべてのカラムに定義順に値を提供する場合は、カラムリストを省略できます。
REPLACE INTO customer VALUES
(002367,'John','13900001111','Hangzhou',0,'987300','WestLake','CloudTown',23,'2018-03-02 10:00:00'),
(002368,'Adam','13900002222','Hangzhou',0,'987300','WestLake','CloudTown',28,'2018-08-01 11:00:00'),
(002369,'Brook','13900003333','Hangzhou',1,'987300','WestLake','CloudTown',35,'2018-09-12 08:11:00');