2013-10-16 4 views
4

테이블에 데이터를 삽입하는 앱을 만들고 있습니다. 테이블에 데이터를 삽입 한 후 그 행의 ID를 얻고 싶습니다. 그래서 그것에 따라 추가 작업을 수행 할 수 있습니다. last_insert_rowid() sqlite의 기능을 사용하려고했지만 행운을 찾지 못했습니다. 어느 것이 마지막으로 삽입 된 행 ID를 얻는 가장 좋은 방법인지 알 수 있습니다. 어떤 아이디어라도 환영합니다. 미리 감사드립니다. phonegap에서 sqlite의 마지막 행 ID를 가져 오는 방법 android

+0

LAST_INSERT_ROWID을() 일을해야합니다. 삽입물이 통과 했습니까? – SHANK

+0

올바른 검색어 SELECT last_insert_rowid()를 사용하시기 바랍니다. – SHANK

+0

테이블 이름을 포함하지 마십시오. 잘못된 방법으로 사용할 수 있습니다. 예제를 통해 변수에 결과를 전달할 수 있습니까? –

답변

4

당신은 같은 테이블에 마지막으로 삽입의 ID를 얻을 수 있습니다 -

tx.executeSql("INSERT INTO profile('name','label','list_order','category') values(?,?,?,?)", 
    [currentProfile.name, currentProfile.label, currentProfile.list_order, currentProfile.category], 
    function(tx, results){ 
     var lastInsertId = results.insertId; // this is the id of the insert just performed 
    }, 
    failCB 
) 

WebSQL의 results.insertId는 MySQL의에서 mysql_insert_id() 비슷합니다 -

mysql_query("INSERT INTO mytable (product) values ('kossu')"); 
printf("Last inserted record has id %d\n", mysql_insert_id()); 
1

테이블에 rowid, oid 또는 _rowid_라는 열이 있습니까? 그렇게하면 last_insert_rowid()과 관련된 문제가 발생합니다. here을 참조하십시오.

해결 방법 : 자동 증가되는 ID 열이있는 경우 다음 SQL을 사용하여 마지막 항목을 가져올 수 있습니다.

SELECT * FROM yourTable ORDER BY yourIdColumn DESC LIMIT 1 

해커이지만 작동합니다.

+0

db에서 레코드를 삭제하는 경우에도 작동하지 않습니다. 새 레코드는 삭제 된 레코드의 ID를 사용합니다. – sga4

관련 문제