martin7887
martin7887

Reputation: 13

Java Postgresql How to generate primary key automatically

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 ?

Upvotes: 0

Views: 1087

Answers (1)

user330315
user330315

Reputation:

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);
}

Upvotes: 2

Related Questions