WebSql:如果达到大小限制,事务会回滚

时间:2013-02-25 11:44:01

标签: javascript web-sql

我刚注意到,如果你将数据插入到WebSQL中,并且je达到最大大小限制,iPad会弹出一个警告,询问你是否要增加大小。但是,即使您批准,当前事务也将回滚。我想知道是否有任何可以阻止回滚的事情,所以你可以继续吗?

Here是测试代码。实际执行回滚的代码是

db.transaction(function (tx) {
    ... // create the table // ...
    for( var i = 0; i < 10000; i++ ) {
        insertData(tx) ;
    }
},
function() {
    console.log("Transaction error -> rollback") ;
},
function() {
    console.log("transaction is ready") ;
}) ;

有什么建议吗?

干杯

1 个答案:

答案 0 :(得分:2)

my blog post详细介绍了使用WebSQL处理空间不足情况的方法。基本上,您没有权力拒绝浏览器提示用户,因此您必须处理这种情况。简单的做法就是告知用户您需要更多空间,并强制重新提示以增加大小,事务的成功回调会调用原始代码。

如果你真正打算说的是你想要保留所有代码 - 直到你的空间不足,你可以保留一个外部索引,指出在事务回滚之前你设法走了多远,然后重做具有先前限制的交易。这样,所有可能填入的数据都将存在(其余的将永远不会被写入)。