REPLACE


INSERT 쿼리를 생성할 때 중복을 허용하지 않는 프라이머리 키나 인덱스는 실행되지 않 습니다. 하지만 REPLACE 명령문은 중복된 인덱스 컬럼이 있을 경우 기존 데이터를 삭제 하고 새로운 데이터로 교체하게 됩니다.

먼저 테이블의 데이터 내용을 확인해 봅니다.

| 콘솔 실습 화면 |

mysql> select * from board;
+----+---------+-------+-------+------+
| Id | regdate | title | level | pos  |
+----+---------+-------+-------+------+
|  2 | NULL    | NULL  |     2 |    5 |
|  3 | NULL    | NULL  |     1 |    2 |
+----+---------+-------+-------+------+
2 rows in set (0.00 sec)

Id가 2로 중복된 데이터를 REPLACE로 삽입해 봅니다.

| 콘솔 실습 화면 |

mysql> REPLACE INTO board (Id, level,pos) values (2,21,53);
Query OK, 2 rows affected (0.01 sec)

오류가 나지 않고 정상적으로 수행되었습니다. Selelct 명령을 통하여 다시 한번 내용을 확인해 봅니다.

| 콘솔 실습 화면 |

mysql> select * from board;
+----+---------+-------+-------+------+
| Id | regdate | title | level | pos  |
+----+---------+-------+-------+------+
|  2 | NULL    | NULL  |    21 |   53 |
|  3 | NULL    | NULL  |     1 |    2 |
+----+---------+-------+-------+------+
2 rows in set (0.00 sec)

위의 실습에서는 인덱스가 2인 동일한 컬럼을 REPLACE를 통하여 기존에 데이터가 삭제 되고 새로운 데이터로 변경되는 것을 확인할 수 있습니다.