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와 동일하게 행 추가 됐다
참고사이트
'Database > MySQL' 카테고리의 다른 글
[MySQL] UPSERT, INSERT ON DUPLICATE UPDATE 등록 또는 수정 (0) | 2023.05.04 |
---|---|
[MySQL] TEMPORARY TABLE 사용하기 #2 (BULK INSERT) (0) | 2023.04.07 |
[MySQL] TEMPORARY TABLE 사용하기 #1 (0) | 2023.04.06 |