6

テーブルにデータを挿入するアプリを作成しています。テーブルにデータを挿入した後、その行のIDを取得したいので、それに応じてさらに操作を行うことができます。sqlite のlast_insert_rowid()関数を使用しようとしましたが、うまくいきませんでした。最後に挿入された行 ID を取得するための最良の方法を教えてください。どんなアイデアでも大歓迎です。前もって感謝します。

4

2 に答える 2

8

次のように、テーブルの最後の挿入の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
)

WebSQLresults.insertIdは MySQL と似てmysql_insert_id()います -

mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());
于 2013-10-16T16:14:17.227 に答える
1

テーブルに、rowid、oid、または _rowid_ という名前の列がありますか? その場合、last_insert_rowid()意図したとおりに動作するという問題が発生します。ここを参照してください。

回避策: 自動インクリメントされる ID 列がある場合は、次の SQL を使用して最後のエントリを取得できます。

SELECT * FROM yourTable ORDER BY yourIdColumn DESC LIMIT 1

ハックですが、うまくいきます。

于 2013-10-16T11:28:37.647 に答える