我正在为我的 Phonegap 应用程序开发一些数据库操作。我正在测试 SQLite 的事务功能,有一点我不明白。
这是一笔交易中的示例:
dbObj.dbConnection.transaction(function (tx) {
tx.executeSql('INSERT OR IGNORE INTO foo (id, text) VALUES (?, ?)', [6,"aaalabala6"], function(tx, results) {
document.write("make insert<br>");
}, function (tx, err){
alert(err.message);
});
tx.executeSql('CREATE TABLE foo (id unique, text)', [], function(tx, results) {
}, function (tx, err){
console.log(err.message); // here an error - table already exists
});
tx.executeSql('INSERT OR IGNORE INTO foo (id, text) VALUES (?, ?)', [7,"aaalabala7"], function(tx, results) {
document.write("make insert<br>");
}, function (tx, err){
alert(err.message);
});
});
中间 SQL 查询抛出错误(无法准备语句(1 表 foo 已存在)),因为表“foo”已存在。问题是,为什么事务不回滚?我可以以某种方式强制事务回滚错误吗?
我的陈述中有错误吗?