手动设置和检查id字段

时间:2014-12-05 07:23:33

标签: javascript mysql cordova phonegap-plugins

我正在开发一个在某个超级用户下添加20个用户的phonegap应用程序。由于在一个超级用户下只有20个id可用,我在id字段中使用了自动增量。现在我给出了以下场景 -

1)User1输入他的id为1

2)User1然后将他的id编辑为4,因为他喜欢这个数字

3)User2注册,默认编号为5

4)User2将其身份编辑为20

这就是我的问题所在,如何重新检查并分配已分配的数字,然后再进行编辑。如您所见,在上面的场景中,1-4和4-20的数字将不被使用。

以下是我到目前为止所做的代码 -

var db = window.sqlitePlugin.openDatabase("Database", "1.0", "Application", -1);
var Id = window.localStorage["user_id"];
var Number = '';
db.transaction(function(txaf) {
            db.transaction(function(tx) {
                //store data for local storage
                //var Number = GenerateRandom();
                //var Number;
                tx.executeSql(
                    "SELECT id,number FROM range WHERE superuser_id = '" +
                    SuperuserId + "' ORDER BY id ASC Limit 1 ;", [],
                    function(tx, result) {
                        //if user id found then just update data for that user
                        //alert(result.rows.item(0).id);
                        Number = result.rows.item(0).number;
                        var UpdateId = result.rows.item(0).id;
                        var Data = JSON.parse(window.localStorage[
                            "data"]);
                        Data.number = Number;
                        var DataJson = JSON.stringify(Data);
                        window.localStorage["data"] = DataJson;
                        tx.executeSql(
                            "UPDATE range  SET is_used = '1' WHERE id = '" +
                            UpdateId + "'", '', function(tx,
                                resUpdate) {}, function(e) {
                                //console.log("ERROR at update: " + e.message);
                            });
                    });
            }, function(e) {
                //console.log("ERROR: " + e.message);
            });

1 个答案:

答案 0 :(得分:0)

id应该是唯一的。这意味着如果用户更改其ID,您需要重新输入20个ID,从而更改其他用户首选ID。可能的出路:

1不要使用自动增量,自己进行身份簿记。向用户提供可用ID选项,并让他们从此列表中进行选择。

2使用帮助程序表(或使用用户表中的字段)将用户首选标识映射到自动生成的标识。