我目前正在使用Chrome中的WEBSQL数据库。
我有一些示例代码,它使用基于chrome的WebSQL数据库和递归CTE(可以很容易地粘贴到开发人员的javascript控制台中进行验证)
/* Open Database */
var db = window.openDatabase("MyTestDB", "1", "1", 5e6),
/* function that you can execute with any sql */
testSql = function(sql){
db.transaction(function _go(tx){
tx.executeSql(sql, [], done, done);
})
},
done = function(){ console.log(arguments) },
/* Sample CTE */
cte_not_broken = `WITH RECURSIVE cnt(x) AS
(SELECT 1
UNION ALL
SELECT 2)
SELECT * FROM cnt;`
cte_broken = `WITH RECURSIVE cnt(x) AS
(SELECT 1
UNION ALL
SELECT x+1 FROM cnt LIMIT 10)
SELECT * FROM cnt;`
testSql(cte_not_broken)
/* returns a SQLResultSet
// { x: 1, x: 2 } */
testSql(cte_broken)
/* returns a SQLError
// { code: 5,
// message: "could not prepare statement (23 not authorized)" } */
testSql("SELECT sqlite_version()")
/* returns a SQLResultSet
// { sqlite_version(): "3.8.7.4" } */
如果我在Sqlite Manager firefox扩展中运行这些相同的查询,则这些CTE查询执行工作。如果我在设备上运行它们(android / cordova使用SqlitePlugin),他们会查询做工作。
Chrome中是否有任何方法可以启用CTE?