2012-07-18 3 views
4

PHP 5.4와 함께 MySQL 5.5를 사용하고 있습니다. 대량 삽입을 수행 중이며 새로 삽입 된 ID를 모두 캡처해야합니다.대량 삽입 후 ID 검색

$db->query("INSERT INTO commodity (analysis_id, commodity_description, a_units, 
a_average_yield, a_average_price) SELECT $analysis_id, commodity_description, 
a_units, a_average_yield, a_average_price FROM commodity WHERE analysis_id = 
$import_analysis_id"); 

삽입 된 행의 새 아이디의 모든를 검색 할 수있는 방법이 있나요 : 이것은 내 코드? $db->insert_id을 사용하면 단일 ID 만 반환됩니다. PHP 루프를 사용하고 여러 쿼리를 실행해야하는 것은 싫지만 필자가해야한다면 그렇게 할 것입니다. 감사!

+0

(알려진 해결책 없음, 알고 있음). ID가 필요한 것에 대한 예를 게시 할 수 있습니까? 우리는 당신의 목표를 보관할 다른 방법을 찾을 수 있을지도 ... – Ron

+0

당신의 테이블에 날짜 시간을 기록 했습니까? 그렇다면 특정 시간 스탬프 뒤에 모든 삽입 된 ID를 얻기 위해 간단한 쿼리를 작성할 수 있습니다 .. –

+0

원하는 "ID"의 필드 이름은 무엇입니까? 나는 그것이 analysis_id가 아닌 것으로 짐작하고있다. 그것은 commodity_id 또는 아마도 id 일 수 있습니까? – ghbarratt

답변

0

나는 이것을 생각하고 있었다고 생각합니다. 나는 analysis_id (예 : 케이스 번호, 고객 번호 등)를 삽입 했으므로 삽입 된 analysis_id에 대해 모든 ID를 가져 오는 쿼리를 실행하기로 결정했습니다. 이것은 내 문제를 해결했다.

+0

차가움. 그러면 analysis_id의 색인이 생성됩니까? –

+0

예, analysis_id의 색인이 생성됩니다. – Jeff

4

id 자동 증가는 테이블에서 가장 높은 ID를 먼저 선택하여 찾을 수 있습니다. 삽입 후 새로운 것보다 높은 id 초입니다.

select max(id) from commodity 
+2

이것은 동시성에 안전하지 않습니다 ... – Ron

+6

이 솔루션을 사용하면 LOCK TABLES를 사용하여 다른 세션이 동일한 테이블에 삽입되지 않도록 데이터를 왜곡하지 않도록하십시오. –

+1

트랜잭션을 처리하여 작동해야합니다. –