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

MySQL 테이블에 자동 증가 열 값과 텍스트를 연결한 결과로 열을 채우는 방법

MySQL 테이블에서 자동 증가(AUTO_INCREMENT) 열의 값과 특정 텍스트를 연결한 결과를 별도의 열에 저장해야 하는 경우가 있습니다. 이럴 때 LAST_INSERT_ID() 함수를 활용하면 간단하게 해결할 수 있습니다. 먼저 예제에 사용할 테이블부터 생성해 보겠습니다.

1단계: 테이블 생성하기

자동 증가 기본 키인 UserId와, 연결된 문자열을 저장할 UserAutoIncrement 열로 구성된 데모 테이블을 만듭니다.

mysql> create table DemoTable
    (
    UserId int(6) unsigned zerofill NOT NULL AUTO_INCREMENT,
    UserAutoIncrement char(100) default null,
    PRIMARY KEY(UserId)
    );
Query OK, 0 rows affected (0.72 sec)

2단계: 레코드 삽입하기

insert 명령으로 테이블에 레코드를 하나 추가합니다. 자동 증가 열이 있으므로 별도의 값을 지정하지 않아도 됩니다.

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.13 sec)

3단계: 삽입된 데이터 확인하기

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과:

+--------+-------------------+
| UserId | UserAutoIncrement |
+--------+-------------------+
| 000001 | NULL              |
+--------+-------------------+
1 row in set (0.00 sec)

UserAutoIncrement 열이 아직 NULL로 비어 있는 것을 확인할 수 있습니다.

4단계: CONCAT과 LAST_INSERT_ID()로 열 업데이트하기

이제 자동 증가 값과 텍스트를 연결한 결과로 해당 열을 채우는 쿼리입니다. 핵심은 WHERE UserId = LAST_INSERT_ID() 조건을 사용해 방금 삽입한 레코드만 정확하게 대상으로 지정하는 것입니다.

mysql> update DemoTable set UserAutoIncrement=CONCAT('USER-', UserId) WHERE UserId = LAST_INSERT_ID();
Query OK, 1 row affected (0.20 sec)
Rows matched: 1 Changed: 1 Warnings: 0

5단계: 최종 결과 확인

업데이트 후 테이블을 다시 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과:

+--------+-------------------+
| UserId | UserAutoIncrement |
+--------+-------------------+
| 000001 | USER-000001       |
+--------+-------------------+
1 row in set (0.00 sec)

'USER-' 접두사와 자동 증가 값이 성공적으로 연결되어 UserAutoIncrement 열에 'USER-000001'로 저장된 것을 확인할 수 있습니다.

참고 사항

LAST_INSERT_ID()는 현재 연결(세션)에서 가장 최근에 생성된 AUTO_INCREMENT 값을 반환합니다. 따라서 여러 클라이언트가 동시에 레코드를 삽입하는 환경에서도 각 세션은 자신의 마지막 삽입 ID를 독립적으로 유지하므로 안전하게 사용할 수 있습니다. 다만 같은 연결 안에서 중간에 다른 INSERT 문이 실행되면 값이 변경될 수 있으므로, 삽입 직후 바로 업데이트를 수행하는 것이 좋습니다.