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

MySQL에서 AUTO_INCREMENT로 최근 할당된 시퀀스 번호 확인하는 방법

MySQL에서 AUTO_INCREMENT 속성이 설정된 컬럼에 가장 최근에 자동으로 할당된 시퀀스 번호(값)를 확인하려면 LAST_INSERT_ID() 함수를 사용하면 됩니다.

LAST_INSERT_ID() 함수란?

LAST_INSERT_ID()는 현재 연결(세션)에서 가장 최근에 실행된 INSERT 문에 의해 AUTO_INCREMENT 컬럼에 생성된 값을 반환하는 MySQL 함수입니다. 이 함수는 세션별로 동작하기 때문에, 다른 사용자의 INSERT 작업과 간섭 없이 자신이 방금 삽입한 행의 ID를 정확하게 얻을 수 있다는 장점이 있습니다.

사용 예제

먼저 AUTO_INCREMENT가 적용된 테이블을 생성합니다.

mysql> Create table Employee(Id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name Varchar(5));
Query OK, 0 rows affected (0.13 sec)

그다음 두 개의 레코드를 삽입합니다. Id 컬럼은 직접 지정하지 않아도 자동으로 순번이 부여됩니다.

mysql> Insert into Employee(Name) Values('Harvinder');
Query OK, 1 row affected (0.06 sec)

mysql> Insert into Employee(Name) Values('Suresh');
Query OK, 1 row affected (0.07 sec)

테이블 내용을 조회하면 Id가 1, 2로 자동 증가되어 저장된 것을 확인할 수 있습니다.

mysql> Select * from Employee;
+----+-----------+
| Id | Name      |
+----+-----------+
| 1  | Harvinder |
| 2  | Suresh    |
+----+-----------+
2 rows in set (0.00 sec)

이제 LAST_INSERT_ID() 함수를 실행하면 가장 최근에 AUTO_INCREMENT에 의해 할당된 시퀀스 번호인 2가 반환됩니다.

mysql> Select Last_insert_id();
+------------------+
| Last_insert_id() |
+------------------+
|                2 |
+------------------+
1 row in set (0.00 sec)

주요 특징 및 주의 사항

  • 세션 단위 동작: LAST_INSERT_ID()는 연결 단위로 관리되므로, 여러 클라이언트가 동시에 INSERT를 수행해도 서로의 값에 영향을 주지 않습니다.
  • 다중 행 삽입: 하나의 INSERT 문으로 여러 행을 삽입한 경우, 첫 번째 행에 할당된 ID가 아닌 마지막 행의 ID를 반환합니다.
  • 테이블 무관: 마지막 INSERT가 발생한 테이블이 어떤 테이블이든 상관없이 해당 연결의 최근 삽입 ID를 반환합니다.