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

MySQL에서 SELECT @@IDENTITY란 무엇일까? 마지막 삽입 ID 확인 방법

MySQL에서 @@identity는 현재 세션에서 AUTO_INCREMENT 컬럼에 마지막으로 삽입된 값을 반환하는 시스템 변수입니다. 즉, 방금 INSERT한 레코드에 자동으로 부여된 ID를 즉시 확인할 수 있어서, 데이터를 삽입한 직후 그 ID가 필요한 경우(예: 관련 테이블에 외래 키로 저장할 때) 매우 유용하게 활용됩니다.

실제 동작 과정을 예제를 통해 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 자동 증가 기본키를 가진 테이블을 만들어 보겠습니다.

mysql> create table DemoTable(
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName varchar(100)
);
Query OK, 0 rows affected (0.67 sec)

2. 레코드 삽입

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

mysql> insert into DemoTable(UserName) values('David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(UserName) values('Mike');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(UserName) values('Carol');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(UserName) values('Robert');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(UserName) values('John');
Query OK, 1 row affected (0.13 sec)

3. 전체 레코드 조회

SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+----------+
| UserId | UserName |
+--------+----------+
| 1 | David |
| 2 | Mike |
| 3 | Carol |
| 4 | Robert |
| 5 | John |
+--------+----------+
5 rows in set (0.00 sec)

4. @@identity로 마지막 삽입 값 확인하기

이제 @@identity를 사용해 현재 세션에서 마지막으로 삽입된 자동 증가 값을 조회해 보겠습니다.

mysql> select @@identity;

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

+------------+
| @@identity |
+------------+
| 5 |
+------------+
1 row in set (0.00 sec)

결과에서 알 수 있듯이, 가장 최근에 삽입된 'John' 레코드의 UserId인 5가 반환되었습니다. 이처럼 @@identity는 별도의 추가 쿼리 없이 마지막 삽입 ID를 바로 얻을 수 있는 간편한 방법입니다.

참고 사항

MySQL에서는 @@identity 외에도 동일한 역할을 하는 LAST_INSERT_ID() 함수를 제공하며, 이 함수가 더 널리 권장됩니다. 또한 @@identity는 세션 단위로 동작하기 때문에, 다른 클라이언트의 INSERT 작업에 영향을 받지 않고 자신의 세션에서 마지막으로 삽입한 값만 정확히 반환한다는 점을 기억해 두면 좋습니다.