0

I woudlike to generate automatically a new id (primary key) when I use INSERT INTO :

    String id = "1";
    PreparedStatement prep = conn.prepareStatement("INSERT INTO TABLE (id) VALUES(?)");
    prep.setString(1, id); // generate new id 
    prep.executeUpdate();

Actually I set 1 to my id but if I want to generate more INSERT INTO How can I INSERT INTO new value with new id ?

2

1 Answer 1

2

Use an identity column:

create table foo 
(
  id integer primary key generated always as identity, 
  some_column text, 
  ... 
)

Then use PreparedStatement.getGeneratedKeys()

int id = -1;
PreparedStatement prep = conn.prepareStatement("INSERT INTO TABLE (some_column) VALUES(?)", Statement.RETURN_GENERATED_KEYS);
prep.setString(1, "some value");
prep.executeUpdate();
ResultSet rs = prep.getGeneratedKeys();
if (rs.next()) {
  id = rs.getInt(1);
}
Sign up to request clarification or add additional context in comments.

1 Comment

perfect ! Thank you ! (you just forget ')' after rs.next())

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.