1

phonegap を使用して ios および android アプリを作成しています。私は WebSql を使用していますが、この問題に直面しています。行を削除するときに「位置」という名前の列の値を再配置したいと考えています。例えば。: ベース テーブルは次のとおりです。

╔═════╦══════════╗
║ ID  ║ POSITION ║
╠═════╬══════════╣
║  23 ║        0 ║
║  32 ║        1 ║
║ 143 ║        2 ║
║  13 ║        3 ║
╚═════╩══════════╝

たとえば、位置が1の行を削除したい場合、下の行の位置は次のように自動的に1つ減少します:

╔═════╦══════════╗
║ ID  ║ POSITION ║
╠═════╬══════════╣
║  23 ║        0 ║
║ 143 ║        1 ║
║  13 ║        2 ║
╚═════╩══════════╝

私の質問は:行の削除後にMySqlで直接これを行う方法はありますか? または、次のようにjavascriptでこれを行う必要がありますか? - 行を削除する - すべてのテーブルをクエリする - それらをループして位置を変更する - 行を更新する.

手伝ってくれてありがとう !

4

2 に答える 2

2

delete ステートメントが実行された後、この update ステートメントを実行して、position

UPDATE  tableName a
        INNER JOIN
        (
            SELECT  a.id, @rn := @rn + 1 New_position
            FROM    tableName a, (SELECT @rn := 0) b
            ORDER   BY a.Position
        ) b ON  a.ID = b.ID
SET     a.Position = b.New_Position

これは、ステートメントが実行された後の OUTPUT です。

╔═════╦══════════╗
║ ID  ║ POSITION ║
╠═════╬══════════╣
║  23 ║        1 ║
║ 143 ║        2 ║
║  13 ║        3 ║
╚═════╩══════════╝
于 2013-03-30T15:10:47.277 に答える
0

最後に、私の場合、localStorage の使用は WebSql よりも簡単で優れていました。

于 2013-04-03T09:47:55.743 に答える