外键的HTML5 Web SQL值

HTML5 Web SQL value for foreign key

本文关键字:SQL Web HTML5      更新时间:2024-03-11

我正在使用HTML5 Web SQL和Javascript来设置我的表。我有两张桌子:游戏&框架。我需要从游戏表中提取最后一个记录(最近的)id,并将其用作帧表中的外键。

 function createGame (tx) {
                tx.executeSql('CREATE TABLE IF NOT EXISTS games(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, created unique, alley, date DATETIME, weight)');
                tx.executeSql('INSERT INTO games(created, alley, date, weight) VALUES(?, ?, ?, ?)', [created, alley, date, weight]);
           }

我的created、alley、date和weight值是在上面的函数之外定义的。

function createFrame (tx) {
                tx.executeSql("PRAGMA foreign_keys = ON;");
                tx.executeSql('CREATE TABLE IF NOT EXISTS frames(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, frame, pins, comments, FOREIGN KEY (gameID) REFERENCES games(id))');
                tx.executeSql("INSERT INTO frames(frame, pins, comments, gameID) VALUES(?, ?, ?, ?)", [frame, pins, comments, gameID]);
           }

我的问题是,我不知道如何获得游戏表中最后一个(最近的)记录id的值,并将其用于帧表中的外键。

将其定义为如下变量并没有给我带来好运:

db.transaction(function(tx) {
            tx.executeSql('SELECT LAST(id) FROM games', [], function(transaction,output) {
                var gameID = output.id;
                console.log(output);
            });
          });

有人能告诉我获得游戏表中最后一个id值的最佳方法吗?将其用作帧表的外键?

提前谢谢。

要获得最大值,请使用max:

SELECT MAX(id) FROM games

要获得属于该游戏的帧,请搜索该查询返回的值,或者直接使用子查询计算:

SELECT * FROM frames WHERE gameID = (SELECT MAX(id) FROM games)

如果你要玩最后一场游戏,请先。。。不要试图查询最后一场比赛的每帧

      SELECT id FROM games ORDER BY ID DESC LIMIT 1;

这将返回上一个游戏的id。

然后将results.row.id保存在localstorage中,这样您就可以轻松地访问它,而不必继续执行多个表查询(手机内存有限)。并将其用作帧的变量。

或者如果您更喜欢将其作为子查询进行

SELECT * FROM frames WHERE gameID = (SELECT id FROM games ORDER BY ID DESC LIMIT 1)