문제

MySQL에서 삽입 작업에 사용되는 기본 키는 자동화 될 때 어떻게해야합니까?

기본적으로, 나는 진술이 완료되면 새로운 자동화 된 값이 반환되기를 원합니다.

감사!

도움이 되었습니까?

해결책

귀하의 설명 의견에 따르면 다른 동시 삽입물이 발생하면 Last_insert_id ()가 잘못된 결과를 제공하지 않는지 확인하는 데 관심이 있다고합니다. 다른 동시 활동에 관계없이 Last_insert_id ()를 사용하는 것이 안전하다는 것을 안심하십시오. last_insert_id ()는 현재 세션에서 생성 된 가장 최근의 ID 만 반환합니다.

직접 시도해 볼 수 있습니다.

  1. 두 개의 쉘 창을 열고 각각에서 mySQL 클라이언트를 실행하고 데이터베이스에 연결하십시오.
  2. 쉘 1 : auto_increment 키가있는 테이블에 삽입하십시오.
  3. 쉘 1 : last_insert_id ()를 선택하고 결과를 참조하십시오.
  4. 쉘 2 : 같은 테이블에 삽입하십시오.
  5. 쉘 2 : last_insert_id ()를 선택하고 쉘 1과 다른 결과를 참조하십시오.
  6. 쉘 1 : last_insert_id ()를 다시 선택하고 다시 이전 결과의 반복을 참조하십시오.

당신이 그것에 대해 생각한다면, 이것은 의미가있는 유일한 방법입니다. 자동 증가 키 메커니즘을 지원하는 모든 데이터베이스는 이러한 방식으로 작동해야합니다. 결과가 다른 클라이언트가 동시에 삽입 할 수있는 레이스 조건에 의존하면 현재 세션에서 마지막 삽입 된 ID 값을 얻을 수있는 신뢰할 수있는 방법이 없습니다.

다른 팁

MySQL 문서는 기능을 설명합니다. last_insert_id ()

table_name에서 max (primary_key_column_name)를 선택하십시오. 나는 MySQL 사람이 아니지만 마지막으로 완성 된 동작에 대해 마지막으로 삽입 된 ID를 얻을 수있는 구체적인 방법이 있습니다. 테이블에 글을 쓰고 쿼리 사이에 인서트가 발생하면 어떻게됩니까? 나는 그것이 많은 달 전에 나에게 찔 렸기 때문에 알고있다 (예, 그렇습니다). 다른 모든 것이 실패하면 설명서를 읽습니다. http://dev.mysql.com/doc/refman/en/getting-unique-id.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top