Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 UPDATE를 실행하면서 데이터를 변경하지 않는 방법

네, 충분히 가능합니다. MySQL에서 UPDATE 문을 실행하면서 실제로는 아무런 값도 변경하지 않으려면, 컬럼 값을 자기 자신에게 다시 할당하면 됩니다. 이 글에서는 예제를 통해 그 과정을 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 데모용 테이블을 생성합니다.

mysql> create table DemoTable(
   Id int
);
Query OK, 0 rows affected (1.02 sec)

2단계: 데이터 삽입

INSERT 명령을 사용하여 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable values(201);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values(202);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(290);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(301);
Query OK, 1 row affected (0.13 sec)

3단계: 저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+------+
| Id   |
+------+
| 201  |
| 202  |
| 290  |
| 301  |
+------+
4 rows in set (0.00 sec)

4단계: 변경 없이 UPDATE 실행하기

핵심은 SET 절에 컬럼 값을 자기 자신에게 대입하는 것입니다. 아래 쿼리처럼 SET Id = Id로 작성하면 새로운 값이 기존 값과 동일하기 때문에 MySQL은 실질적인 변경이 발생하지 않았다고 판단합니다.

mysql> update DemoTable set Id=Id where Id=290;
Query OK, 0 rows affected (0.08 sec)
Rows matched: 1 Changed: 0 Warnings: 0

결과 메시지를 보면 Rows matched: 1, 즉 조건에 일치하는 행은 1개였지만 Changed: 0, 즉 실제로 변경된 행은 없음을 알 수 있습니다. MySQL은 대입되는 값이 기존 값과 같으면 물리적인 업데이트를 수행하지 않기 때문입니다.

5단계: 최종 결과 확인

테이블을 다시 조회하여 데이터가 그대로 유지되는지 확인해 보겠습니다.

mysql> select *from DemoTable;

출력 결과는 이전과 완전히 동일합니다.

+------+
| Id   |
+------+
| 201  |
| 202  |
| 290  |
| 301  |
+------+
4 rows in set (0.00 sec)

정리

UPDATE 문에서 SET 절에 자기 자신의 값을 다시 대입하면 쿼리는 정상적으로 실행되지만 실제 데이터는 전혀 변경되지 않습니다. 이 기법은 특정 행의 존재 여부를 확인하거나, 트리거나 로그 등 부수적인 동작만 의도적으로 실행하고 싶을 때 유용하게 활용할 수 있습니다.