WebSQL,插入两个或多个表

时间:2013-02-10 21:42:27

标签: database html5 web-sql

我正在使用webSql,除了这个小东西之外,我想出了一切:让我们说我们有两个表(A和B),首先,我想插入表A并得到最新的ID,我将作为secundary密钥插入表B中。在这两种情况下,表都有自动增量ID。

当我从底部示例中“警告(TableAId)”时,我得到了正确的值。但是,当我将它插入TableB时,它是空的。我认为问题可能是函数(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);

1 个答案:

答案 0 :(得分:1)

由于它是异步的,因此在调用第二个操作之前必须等待第一个操作完成。

tx.executeSql('INSERT INTO TableA (value) VALUES (?)', [myValue], 
    function(tx, results) {
        var TableAId = results.insertId;
        tx.executeSql('INSERT INTO TableB (key_from_TableA) VALUES (?)', [TableAId], 
             function(tx, results) {
                TableBId = results.insertId;
             }, errorCB);
    }, errorCB);