Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database WebSQL,插入到两个或多个表中_Database_Html_Web Sql - Fatal编程技术网

Database WebSQL,插入到两个或多个表中

Database WebSQL,插入到两个或多个表中,database,html,web-sql,Database,Html,Web Sql,我正在使用webSql,我几乎解决了所有问题,除了这个小问题:假设我们有两个表(A和B),首先,我想插入表A并获取最新的ID,我将把它作为第二个键插入表B。在这两种情况下,表都具有自动增量ID 当我从下面的示例中选择“alert(TableAId)”时,我得到了正确的值。然而,当我把它插入表B时,它是空的。我认为问题可能在于函数(tx,results)是异步的,因此我在实际获取TableAId之前插入TableB 这里的适当解决方案是什么 var TableAId = ""; tx.execut

我正在使用webSql,我几乎解决了所有问题,除了这个小问题:假设我们有两个表(A和B),首先,我想插入表A并获取最新的ID,我将把它作为第二个键插入表B。在这两种情况下,表都具有自动增量ID

当我从下面的示例中选择“alert(TableAId)”时,我得到了正确的值。然而,当我把它插入表B时,它是空的。我认为问题可能在于函数(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);

因为它是异步的,所以在调用第二个操作之前,您必须等待第一个操作完成

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);

WebSQL不是被禁止的吗?它在PrimeGAP()中仍然非常活跃,但是谢谢你的回复。我不知道PrimeGAP是如何在封面下实现它的,但是规范很清楚,也许你应该考虑索引数据库。