私は webSql を使用していますが、この小さなことを除いて、すべてを理解しました: 2 つのテーブル (A と B) があり、最初に、テーブル A に挿入して最新の ID を取得したいとします。これをセカンダリ キーとしてテーブル B に挿入します。どちらの場合も、テーブルには自動インクリメント ID があります。
一番下の例から "alert(TableAId)" すると、正しい値が得られます。ただし、TableB に挿入すると、空になります。function(tx, results) が非同期であるため、実際に TableAId を取得する前に TableB に挿入することが問題である可能性があると思います。
ここで適切な解決策は何でしょうか?
var TableAId = "";
tx.executeSql('INSERT INTO TableA (value) VALUES (?)', [myValue],
function(tx, results) {
TableAId = results.insertId;
}, errorCB);
tx.executeSql('INSERT INTO TableB (key_from_TableA) VALUES (?)', [TableAId],
function(tx, results) {
TableBId = results.insertId;
}, errorCB);