본문 바로가기

Database/MySQL

[MySQL] REPLACE INTO, DELETE INSERT 대체

REPLACE INTO

REPLACE INTO는 기존에 등록된 ROW 데이터를 REPLACE에 해당하는 데이터로 대체하기 위해 사용한다.

이때 그 기준은 PK값을 기준으로 하게 된다. 만약 PK에 해당하는 ROW가 없다면 INSERT와 동일하게 동작 한다.

 

REPLACE INTO를 하기 위해서는 대상 테이블에 INSERT, DELETE 권한을 필요로 한다.

 

예시1 (PK - ID)

 REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');
 REPLACE INTO test VALUES (1, 'New', '2014-08-20 18:47:42');
 
 SELECT * FROM test;
+----+------+---------------------+
| id | data | ts                  |
+----+------+---------------------+
|  1 | New  | 2014-08-20 18:47:42 |
+----+------+---------------------+

PK값인 ID가 두번째 REPLACE 데이터 PK 값과 동일해서 마지막에 REPLACE한 데이터로 변경

 

예시2 (PK - ID, TS)

REPLACE INTO test2 VALUES (1, 'Old', '2014-08-20 18:47:00');
REPLACE INTO test2 VALUES (1, 'New', '2014-08-20 18:47:42');

SELECT * FROM test2;
+----+------+---------------------+
| id | data | ts                  |
+----+------+---------------------+
|  1 | Old  | 2014-08-20 18:47:00 |
|  1 | New  | 2014-08-20 18:47:42 |
+----+------+---------------------+

PK값인 ID, TS와 동일한 행이 없어서 INSERT와 동일하게 행 추가 됐다

 

 

 

참고사이트

https://dev.mysql.com/doc/refman/8.0/en/replace.html