MYSQL 에서 마지막 기록 을 얻 은 문장

1383 단어 MYSQL마지막 기록
MySQL 에서 auto 사용 하기increment 형식의 id 필드 는 표 의 메 인 키 로 하고 다른 표 의 외 키 로 사용 하여'메 인 테이블 구조'를 형성 합 니 다.이것 은 데이터베이스 디자인 에서 흔히 볼 수 있 는 용법 입 니 다.그러나 구체 적 으로 id 를 생 성 할 때 우리 의 작업 순 서 는 보통 주 표 에 기록 을 삽입 한 다음 에 자동 으로 생 성 된 id 를 얻 고 이 를 바탕 으로 표 의 기록 을 삽입 하 는 것 입 니 다.이 안에 어려움 이 있 습 니 다.메 인 시트 기록 을 삽입 한 후에 해당 하 는 id 를 어떻게 얻 는 지 하 는 것 입 니 다.일반적인 방법 은'select max(id)from tablename'을 통 해 이 루어 집 니 다.그러나 이러한 방법 은 병행 하 는 상황 을 고려 해 야 합 니 다.업무 중 에 메 인 시트 에'X 잠 금'을 넣 고 max(id)의 값 을 얻 은 후에 잠 금 을 풀 어야 합 니 다.이런 방법 은 필요 한 절차 가 비교적 많 고 좀 번 거 로 우 며 병발 성도 좋 지 않다.더 쉬 운 방법 없 을까요?정 답 중 하 나 는 select LASTINSERT_ID()이 동작.언뜻 보기 에는 select max(id)와 비슷 하지만 사실은 스 레 드 가 안전 합 니 다.즉,그것 은 데이터베이스 연결 에 구체 적 인 것 이다.다음은 실험 을 통 해 설명 한다.
1.연결 1 에 A 표 에 기록 을 삽입 하고 A 표 는 auto 를 포함 합 니 다.increment 형식의 필드 입 니 다.
2.연결 2 에서 A 표 에 기록 을 하나 더 삽입 합 니 다.
3,결과:연결 1 에서 select LAST 실행INSERT_ID()에서 얻 은 결과 와 연결 2 에서 select LAST 실행INSERT_ID()의 결 과 는 다르다.두 연결 에서 selectmax(id)를 실행 한 결 과 는 같 습 니 다.       사실 MSSQL 에서 SCOPEIDENTITY()와 IDENTCURRENT()의 차 이 는 여기 와 유사 하 다.SCOPE 사용IDENTITY()는 IDENTITY 필드 에 삽 입 된 현재 세 션 의 값 을 얻 을 수 있 으 며,IDENT 를 사용 합 니 다.CURRENT()는 세 션 을 구분 하지 않 고 특정한 IDENTITY 필드 에 삽 입 된 최대 값 을 얻 습 니 다.
주:select last 사용insert_id()는 한 번 에 여러 개의 기록 을 삽입 할 때 첫 번 째 삽 입 된 id 값 만 얻 을 수 있 으 니 주의해 야 합 니 다!해 보 셔 도 됩 니 다.
insert into tb(c1,c2) values (c1value,c2value),(c1value1,c2value2)..。

좋은 웹페이지 즐겨찾기