2012-11-21 2 views
2

Kohana에서 하위 쿼리를 사용할 때 올바른 $ insert_id를 어떻게 반환합니까?Kohana에서 하위 쿼리를 사용할 때 마지막 삽입 ID를 얻는 방법

$ insert_id 및 $ affected_rows를 반환하는 쿼리 메서드를 사용하고 있습니다. $ affected_rows에 대한 올바른 값을 리턴하지만 올바르지 않은 $ insert_id에 대해 '1'을 리턴합니다. 아래

검색어 :

$sub = DB::select('id', 'username', 'email', 'lastVisitDate')->from('jos_users'); 

$qry_migrate_users = DB::insert('temp_users', array('old_id', 'username', 'email_work', 'last_login'))->select($sub); 

list($insert_id, $affected_rows) = $qry_migrate_users->execute($this->conn_target); 
+1

주를 이해할 수 있습니다. – biakaveron

+0

그건 내가 의심 스럽지만 확실하지 않은 것입니다. 내가 마지막으로 삽입 된 ID를 실제로 반환 할 방법이 없다는 하위 쿼리를 사용하고 있기 때문에 추측 할 수 있습니까? – sensoria

+1

물론 'old_id'값을 사용하고 'max_id'를 사용하여 'temp_users'에서 새 행을 선택할 수 있습니다. 그런데 왜 마지막 삽입물 ID가 필요한가요? – biakaveron

답변

0

MySQL은 단지 마지막으로 삽입 된 ID와 영향을받는 행을 반환합니다. 원하는대로 할 수있는 방법은 한 가지뿐입니다. 하위 배열을 배열로 실행하고 foreach를 사용하여 단일 삽입을 수행하십시오. 그러나 조금 더 느린 동작입니다! 또는 삽입 한 후 그런 식으로 뭔가를 할 :

SELECT id FROM temp_users WHERE email IN (select email from jos_users) 

당신은 논리를 MySQL의이 * 첫째 * 삽입 행에 대해 마지막으로 삽입 된 ID를 반환

관련 문제