LAST_INSERT_ID 함수는 모든 테이블의 AUTO_INCREMENT 컬럼 중 가장 마지막에 생성된 값을 반환한다.
성공적으로 INSERT된 값이 없을 때에는 가장 마지막에 성공한 값이 유지되며, 실행 중인 SQL 문은 LAST_INSERT_ID() 값에 영향을 주지 않는다. 하나의 INSERT 문을 사용하여 여러 행을 입력하면, LAST_INSERT_ID()는 가장 마지막에 입력한 행의 값을 반환한다. 이전 SQL 문의 수행 결과가 오류를 반환하면, LAST_INSERT_ID() 값은 정의되지 않으며, 롤백해도 LAST_INSERT_ID() 값은 이전 트랜잭션 값으로 복구되지 않는다.
트리거 내에서 사용한 LAST_INSERT_ID() 값은 트리거 밖에서 확인할 수 없다.
생성된 ID는 각 클라이언트의 연결마다 독립적으로 유지된다.
LAST_INSERT_ID()
CREATE TABLE ss (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, text VARCHAR(32));
INSERT into ss VALUES(NULL,’cubrid’);
SELECT LAST_INSERT_ID();
last_insert_id()
=======================
1
INSERT INTO ss VALUES(NULL,’database’),(NULL,’manager’);
SELECT LAST_INSERT_ID();
last_insert_id()
=======================
3
하나의 INSERT 문으로 여러 개의 레코드를 입력하는 경우, LAST_INSERT_ID() 함수는 첫 번째 AUTO_INCREMENT 값을 반환한다.
CREATE TABLE tbl (id INT AUTO_INCREMENT);
INSERT INTO tbl values (500), (NULL), (NULL);
SELECT LAST_INSERT_ID();
last_insert_id()
=======================
1
INSERT INTO tbl values (500), (NULL), (NULL);
SELECT LAST_INSERT_ID();
last_insert_id()
=======================
3
SELECT * FROM tbl;
id
=======================
500
1
2
500
3
4