Я не могу получить идентификатор из таблицы "test" после сохранения его в postgresql с помощью pgadmin4:
Здесь скрипт создания, сгенерированный pgadmi4 из таблицы "test":
CREATE TABLE school.test
(
test_id bigint NOT NULL DEFAULT nextval('school.test_test_id_seq'::regclass),
name character varying(10) COLLATE pg_catalog."default"
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
ALTER TABLE school.test
OWNER to postgres;
Здесь код для вставки значений в «тестовую» таблицу через JDBC:
Connection conn = pstgConn.dbConnection();
String query = "INSERT INTO school.test(name) VALUES (?)";
try (PreparedStatement pst = conn.prepareStatement(query)) {
pst.setString(1, "anything");
pst.executeUpdate();
//Get Sequential number of the table
getSerialNum(conn);
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Здесь функция для получения последнего SerialNumber затронутой таблицы:
public void getSerialNum(Connection connection) {
int serialNum = 0;
try {
Statement stmt = connection.createStatement();
// get the postgresql serial field value with this query
String query = "select currval('test_id')";
ResultSet rs;
rs = stmt.executeQuery(query);
if (rs.next()) {
serialNum = rs.getInt(1);
System.out.println("serialNum = " + serialNum);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Iпопытался выполнить изолированно консолью pdgadmin с теми же результатами.
Вот результаты:
org.postgresql.util.PSQLException: ОШИБКА: отношение "test_id" не существует Позиция: 16в org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse (QueryExecutorImpl.java:2103) в org.postgresql.core.v3.QueryExecutorImpl.processResults (QueryExecutorImpl.jresq.Imp.Exore.ecoreg_exeg) 18(QueryExecutorImpl.java:257) в org.postgresql.jdbc2.AbstractJdbc2Statement.execute (AbstractJdbc2Statement.java:512) в org.postgresql.jdbc2.AbstractJdbc2Statement.executeWlaFtJdbc2Statement.java:374) в org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery (AbstractJdbc2Statement.java:254) в com.cgi.training.javase.school.dao.testDAO.getSerialNgi.45: at.training.javase.school.dao.testDAO.main (testDAO.java:21)