MySQL에서 마지막 레코드를 얻을

출처: 인터넷
작성자: 사용자
키워드: 웹 프로그래밍 MySQL 자습서

Mysql, Auto_increment 유형 ID 필드가 테이블의 기본 키로 사용 하 고 그것은 다른 테이블에 외래 키로 데이터베이스 디자인에서 일반적인 사용은 "마스터-슬레이브 테이블 구조" 형성 한다. 하지만 Id 생성에 관해서, 우리가 일반적으로이 작업을 수행 하 여 기본 테이블에서 레코드를 삽입 후 그것을 기반으로 테이블에서 레코드를 삽입 하려면 자동으로 생성 된 ID. 여기에 하나의 어려움은 기록 된 후 기본 테이블의 ID를 얻을 하는 방법. 일반적인 관행 "tablename에서 최대 (ID)를 선택" 접근 방식을 통해 이지만 그것은 분명이 접근에서는 동시성, "X-잠금" 트랜잭션에서 기본 테이블 필요 고려해 야 다음 후 그것은 최대 (ID)의 값을 잠금 해제. 이 방법은 단계, 약간의 문제, 및 나쁜 동시성을 많이 필요합니다. 어떤 더 간단한 접근은? 한 응답은 선택 (last_insert_id)이이 작업을 것 이다. 첫번째 섬광에, 그것은 같은 선택 최대 (ID), 보이지만 실제로 스레드 안전. 이 데이터베이스 연결에 다는 것을 의미 합니다. 다음 실험은 보여준다:

1. 테이블 A, 1 연결에 레코드를 삽입 하 고 Auto_increment 형식의 필드를 포함 하는 테이블.

2. 연결 2 a. 테이블에 레코드 삽입

3. 결과: 연결 1의에서 선택 last_insert_id ()를 실행 하는 결과가 연결 2, 선택 last_insert_id () 실행의 결과에서 그리고 다른 두 개의 연결의 선택 최대 (ID)를 실행 결과 동일.
사실, MSSQL에서 scope_identity ()와 Ident_current ()의 차이점은 여기 비슷한. Scope_identity를 사용 하 여 ()를 사용 하면 있는 identity 필드 삽입 됩니다, 현재 세션의 값을 가져올 수 그리고 다른 세션의 구별 없이 정체성 필드에 삽입 되는 최대 값을 얻는다 Ident_current ()를 사용 하 여.

참고: 선택 LAST_INSERT_ID ()를 사용 하 여 유의 한 번에 여러 레코드를 삽입 하는 때 단지 당신은 처음으로 삽입 한 ID 값을 반드시! 시도할 수 있습니다.

TB (C1, C2) 값 (C1value, c2value)에 삽입 (c1value1, c2value2)...

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.