LAST_INSERT_ID() 함수로 새 레코드 키 ID 가져오기
MySQL에서는 LAST_INSERT_ID() 함수를 사용하여 가장 최근에 삽입된 레코드의 키(AUTO_INCREMENT) ID 값을 손쉽게 확인할 수 있습니다. 이 글에서는 테이블을 생성한 후, 레코드를 삽입하는 과정에서 LAST_INSERT_ID() 함수를 어떻게 활용하는지 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 CREATE 명령어를 사용하여 테이블을 생성합니다.
쿼리는 다음과 같습니다.
mysql> create table LastInsertRecordIdDemo
-> (
-> id int auto_increment,
-> value varchar(100),
-> primary key(id)
-> );
Query OK, 0 rows affected (0.52 sec)
2단계: 레코드 삽입 및 LAST_INSERT_ID() 설정
테이블 생성이 완료되면 레코드를 삽입하고, LAST_INSERT_ID() 함수를 사용하여 값을 설정합니다.
mysql> insert into LastInsertRecordIdDemo values(1,'Low');
Query OK, 1 row affected (0.10 sec)
mysql> insert into LastInsertRecordIdDemo values(LAST_INSERT_ID(),'High');
Query OK, 1 row affected (0.11 sec)
3단계: SELECT 문으로 결과 확인
이제 SELECT 문을 사용하여 저장된 모든 레코드를 조회할 수 있습니다.
쿼리는 다음과 같습니다.
mysql> select *from LastInsertRecordIdDemo;
실행 결과는 다음과 같습니다.
+----+-------+
| id | value |
+----+-------+
| 1 | Low |
| 2 | High |
+----+-------+
2 rows in set (0.00 sec)
4단계: LAST_INSERT_ID() + 1로 새 레코드 삽입
새로운 레코드를 추가하려면 LAST_INSERT_ID() 함수에 1을 더한 값을 사용하면 됩니다. 쿼리는 다음과 같습니다.
mysql> insert into LastInsertRecordIdDemo values(LAST_INSERT_ID()+1,'Medium');
Query OK, 1 row affected (0.08 sec)
다시 SELECT 문으로 전체 레코드를 조회해 보겠습니다.
mysql> select *From LastInsertRecordIdDemo;
실행 결과는 다음과 같습니다.
+----+--------+
| id | value |
+----+--------+
| 1 | Low |
| 2 | High |
| 3 | Medium |
+----+--------+
3 rows in set (0.00 sec)
정리
이처럼 MySQL의 LAST_INSERT_ID() 함수를 활용하면 별도의 조회 작업 없이도 방금 삽입된 레코드의 AUTO_INCREMENT 키 값을 즉시 얻을 수 있으며, 이 값에 연산을 적용해 다음 레코드의 ID를 지정하는 것도 가능합니다. 참고로 실무에서는 PHP의 mysqli_insert_id(), 자바의 getGeneratedKeys() 등 각 언어의 드라이버가 제공하는 API를 통해 동일한 정보를 더 안전하게 가져오는 방식도 널리 사용됩니다.