열 INSERT
이있는 테이블에 단일 행 을 수행 AUTO_INCREMENT
하면 LAST_INSERT_ID()
함수를 사용하여 AUTO_INCREMENT
해당 행에 저장된 새로운 값 을 반환 하고 싶습니다 .
많은 Microsoft SQL Server 개발자 및 관리자가 의심 할 여지없이 SQL Server ( SCOPE_IDENTITY
및 @@IDENTITY
) 의 동등한 기능에 문제 가 없음을 알고 있습니다 .
MySQL 문서 상태를 알고 있습니다.
생성 된 ID는 연결 별로 서버에서 유지 보수 됩니다. 이는 함수가 주어진 클라이언트에 반환 한 값이 해당 클라이언트
AUTO_INCREMENT
의AUTO_INCREMENT
열에 영향을 미치는 가장 최근의 명령문에 대해 생성 된 첫 번째 값 임을 의미 합니다. 다른 클라이언트AUTO_INCREMENT
가 자체 값을 생성 하더라도이 값은 다른 클라이언트의 영향을받지 않습니다 . 이 동작은 각 클라이언트가 다른 클라이언트의 활동에 대한 염려 나 잠금 또는 트랜잭션없이 자신의 ID를 검색 할 수 있도록합니다.
심지어 말하기까지 :
여러 클라이언트에서 동시에
LAST_INSERT_ID()
및AUTO_INCREMENT
열을 사용하는 것은 완벽하게 유효합니다.
LAST_INSERT_ID()
올바른 값을 반환하지 않을 수있는 알려진 위험이나 시나리오가 있습니까?
CentOS 5.5 x64 및 Fedora 16 x64 및 InnoDB 엔진에서 MySQL 5.5를 사용하고 있습니다.
last_insert_id()
쿼리의 성공 여부를 판단 하기 위해 존재를 사용해서는 안됩니다 . 결국 마지막으로 삽입 된 ID이며 이미 성공했음을 알았을 때 필요한 값을 보유합니다.