Удаленная строка в базе данных Oracle извлекается через JdbcTemplate

#java #oracle #jdbctemplate

#java #Oracle #jdbctemplate

Вопрос:

Я удалил одну строку из одной из таблиц базы данных Oracle, но эта строка все еще извлекается через JdbcTemplate .

Я удалил эту строку, используя следующую команду

 delete from user where RAD_ID="demo";
  

Тем не менее, эта строка извлекается через JdbcTemplate в моем Java-коде. Я немного шокирован этим сценарием.

Комментарии:

1. Вы зафиксировали после удаления? (Очевидно, что ответ «нет», если только что-то не кэширует данные выше по стеку … * 😎 Вы уверены, что подключены к той же БД и схеме?

2. Да, я зафиксировал

3. извините, по какой-то причине эта фиксация не была успешной

4. Можете ли вы найти эту строку, если выполните поиск с помощью клиента DB? (Разработчик Oracle SQL или что-то еще)

5. Я попытался закрыть соединение в sql developer, затем в sql developer появилось всплывающее окно с вопросом, хотите ли вы зафиксировать изменения. Я нажал «Да», и бинго, теперь эта строка удалена

Ответ №1:

Вы запускаете инструкции SQL в разных транзакциях. Вам нужно либо зафиксировать первую транзакцию, открытую для DELETE инструкции, либо повторно использовать первую транзакцию для SELECT инструкции. В зависимости от вашего уровня изоляции транзакции вы можете наблюдать устаревшие данные, считываемые в SELECT .