私は私の中で、いくつかの順序付けられたリストを格納H2 DB、テーブルを持っている:私は、アイテムを削除するH2 - そのインデックス番号(0,1,2,3、...)と、各行を更新
CREATE TABLE IF NOT EXISTS items
(
f_id INTEGER NOT NULL PRIMARY KEY,
f_name VARCHAR(255) NOT NULL,
f_index INTEGER NOT NULL UNIQUE
)
|f_id|f_name|f_index|
|1 |A |1 |
|2 |C |3 |
|3 |B |4 |
|4 |D |2 |
を'D'、私はCのインデックスを2に更新し、Bのインデックスを3に更新する必要があります。
そして、これを行うには私は狂っています。私は私のテーブルには、(未知の理由によって引き起こされる)ギャップを含めることができます怖いので、私は
SqlRowSet rowSet = jdbcTemplate.queryForRowSet("SELECT f_name FROM items ORDER BY f_index");
int i = 0;
while (rowSet.next()) {
String name = rowSet.getString("f_name");
jdbcTemplate.update("UPDATE items SET f_index = ? WHERE f_name= ?", i++, name);
}
が、よりエレガントような何かを探しているので、私は単に
UPDATE items SET f_index = f_index-1 WHERE f_index > ?
たくありません。
H2で私のニーズを達成する方法はありますか?
を使用することができH2を使用したい場合は?テーブルのPKだけですか?もしそうなら、あなたはそれを更新することについて心配するべきではありません。 – nasukkin
なぜf_indexを更新する必要がありますか? – Guenther
@nasukkin私はCREATE TABLE sqlを提供しました – sinedsem