2010-05-16 7 views
2

다른 테이블의 기본 키를 외래 키로 사용하는 2 개의 테이블이 있습니다. 둘 다에 대한 기본 키는 auto_increment으로 설정됩니다.자동 증분 기본 키 (MySQL)의 문제점

문제는 테이블 중 하나에 항목을 만들고 작성할 때 엔트리의 기본 키가 무엇인지 알지 못하고 다른 테이블에 외래 키로 넣을 항목을 파악할 수 없다는 것입니다. . 어떻게해야합니까? auto_increment를 모두 삭제하고 각 항목의 고유 식별자를 작성하여 작성된 항목을 처리하는 데 사용할 수 있습니까? PHP가 관련성이 있다면 사용하고 있습니다. 감사.

답변

4

모든 주요 데이터베이스는 방금 삽입 한 레코드의 ID를 찾는 수단을 제공합니다. 자동 증분 ID의 아이디어는 그다지 유용하지 않을 것입니다.

MySQL에서는 mysql_insert_id()을 사용할 수 있습니다. 둘러싼 PHP function of the same name 또는 MySQL function을 참조하십시오.

+0

매우 짧은 시간에 삽입물이 많이 생성되는 경우 문제가되지 않습니까? 그런 다음 다른 참가자의 신분증을 보냅니 까? 감사. – mathon12

+0

두개의 레코드를 삽입하고 하나가 다른 레코드를 참조한다면, 그 레코드가 서로 즉시 삽입되었는지 확인하거나, 첫 번째 레코드에 대해 mysql_insert_id()를 기록하고 두 번째 레코드를 삽입 할 수없는 경우 저장하십시오 곧. – meagar

+0

@ mathon12 nope. –

0

이 기능을 사용할 수 있습니다 : 당신이 다음 삽입에 사용할 수 있도록 mysql_insert_id을 처음 삽입 한 후

+0

고마워, 그렇게해야 해. – mathon12

0

를 삽입 된 마지막 ID를 얻기 위해, mysql_insert_id() 기능은 autoincremented id 값을 반환합니다

+0

감사합니다. 나는 그것을 살펴볼 것입니다. – mathon12

1

mysql_insert_id은 자동 증가 기본 키의 마지막 생성 된 값을 제공합니다.

PDO를 사용해야하는 경우 (대신) PDO::lastInsertId()을 사용할 수 있습니다. 이는 PDO가 지원하는 모든 데이터베이스 시스템에서 작동합니다.

+0

PDO를 사용하지 마십시오. 흥미롭게도 PostgreSQL에는 꽤 편리한 RETURNING 키워드가 있습니다. – mathon12

관련 문제