0

これは、idを入力として取得する私の削除クラスです。

行を削除することに成功しました(たとえば、データベースからID '3'を含む行)。次に、すべてのIDを更新します。例:私の行は次のとおりです。

1 a5

2 f3

(3 t1が削除されました)

4 r2

したがって、結果を更新する必要があります。

1 a5

2 f3

3 r2

String delete = "DELETE from authors WHERE id = ?";

          Class.forName("com.mysql.jdbc.Driver");
          Connection con = DriverManager.getConnection(url, "root", "easttg");
          PreparedStatement ps = con.prepareStatement(delete);

          //updating the id
          String sql = "Select id from authors";
          PreparedStatement ps2 = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

          ps.setInt(1, id);
          ps.executeUpdate();
          con.close();
4

1 に答える 1

2

一部の行を更新するには、update ステートメントを使用する必要があります。select ステートメントではありません:

update authors set id = ? where id = ?

つまり、ID は行の単なる技術的な識別子です。通常は変更しないでください。また、純粋に技術的な ID が使用される理由は、ID を変更する必要がないためです。これは、同じ ID を含む外部キーを持つ他のテーブルが多数存在する可能性があるためです。ID は、Web サイトで行を表示するために使用される URL の一部である可能性もあり、多くの人がブックマークしている可能性があります。ID は... 行の ID です。ID を変更しません。そうなると、自分の名前を変えたのと同じように、あらゆる種類の問題が発生します。

于 2012-11-28T22:40:43.533 に答える