2013-03-30 47 views
1

我使用phonegap來製作ios和android應用程序。 我正在使用WebSql,我正面臨這個問題: 我想在刪除任何行時重新排列名爲'position'的列的值。例如, : 基表是:DELETE後計算行命令

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

如果我要刪除,例如具有位置的行:1,自動根據列的位置,由一個像減少:

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

我問題是:是否有一種方法可以在行刪除後直接在MySql中執行此操作? 還是我需要在JavaScript中這樣做: - 刪除我的行 - 查詢所有表 - 循環更改它們的位置 - 更新行。

感謝您的幫助!

回答

0

Fin對於我的情況盟友,使用localStorage比WebSql更容易和更好。

2

delete語句執行後,運行此更新語句修改的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 

這是輸出語句執行後的值,

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

非常感謝我會試試這個! – arlg

+0

更新聲明是否適合您? ':)' –

+0

看起來'a'或'b'變量(指tableName)不起作用。 當我做這個簡單的刪除語句時,我也有一個錯誤: DELETE FROM FAVORITES a WHERE a.id = 72104; – arlg