#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
.