UPDATE данных при наличии ID
Корректен ли такой способ обновления данных в таблице? INSERT происходит в том случае если нет ID, а UPDATE если есть ID.
@Override
public void createTable() throws SQLException {
super.executeSQL(
"CREATE TABLE IF NOT EXISTS pupils(" +
"id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY," +
"name NVARCHAR(255) NOT NULL," +
"surname NVARCHAR(255) NOT NULL" +
"CONSTRAINT uc UNIQUE (id,name,surname))",
"Создана таблица " + tableName);
}
@Override
public Pupil save(Pupil obj) throws SQLException {
if(obj.getId() == 0) {
try (PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO pupils (name,surname) VALUES (?,?)")) {
preparedStatement.setString(1, obj.getName());
preparedStatement.setString(2, obj.getSurname());
preparedStatement.executeUpdate();
System.out.println("Запись добавлена" + " " + obj.getName() + " " + obj.getSurname());
}
}
else {
try (PreparedStatement preparedStatement = connection.prepareStatement("UPDATE pupils SET name = ?, surname = ? WHERE id = ?")) {
preparedStatement.setString(1, obj.getName());
preparedStatement.setString(2, obj.getSurname());
preparedStatement.setLong(3, obj.getId());
preparedStatement.executeUpdate();
System.out.println("Запись обновлена");
}
}
return obj;
}
Вот так создаются объекты
Pupil onePupil = new Pupil("Oleg223", "Dawvidow");
Pupil twoPupil = new Pupil("Olesia", "Kisel");
Затем делается INSERT
dataBase.pupilsTable.save(onePupil);
dataBase.pupilsTable.save(twoPupil);
Затем в первом объекте добавляю ID второй остается неизменным.
Pupil onePupil = new Pupil(1,"Oleg2234", "Dawvidow");
Pupil twoPupil = new Pupil("Olesia", "Kisel");
Вывод при INSERT
Запись добавлена Oleg223 Dawvidow
Запись добавлена Olesia Kisel
1 Oleg223 Dawvidow
2 Olesia Kisel
Вывод при UPDATE
Запись обновлена
Запись добавлена Olesia Kisel
1 Oleg2234 Dawvidow
2 Olesia Kisel
3 Olesia Kisel