Ich habe eine Tabelle in mir H2 db, die eine gewisse geordnete Liste speichert:H2 - Aktualisiere jede Zeile mit ihrer Indexnummer (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 |
Wenn ich Artikel entfernen 'D', ich muss C's Index auf 2 und B's Index auf 3 aktualisieren.
Und ich werde verrückt, wenn ich das triyng mache. Ich will nicht einfach
UPDATE items SET f_index = f_index-1 WHERE f_index > ?
, weil ich fürchte, meine Tabellenspalten (verursacht durch unbekannten Gründen) enthalten kann, so suche ich nach einer etwas wie
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);
}
aber eleganter.
Gibt es eine Möglichkeit, meine Bedürfnisse mit H2 zu erreichen?
verwenden Was genau ist f_index? Ist es nur die PK des Tisches? Wenn ja, sollten Sie sich keine Gedanken darüber machen, es zu aktualisieren. – nasukkin
Warum müssen Sie den f_index aktualisieren? – Guenther
@nasukkin Ich habe CREATE TABLE sql – sinedsem