Почему Oracle имеет таблицу, показывающую разные данные с одной и той же базой данных?

58
8

У меня проблемы с Oracle. У меня есть одна база данных или схема и два приложения для управления некоторыми данными: admin app и клиентское приложение.
Я обращаюсь к данным через клиентское приложение, он показывает строки и поля.

Я получаю доступ к данным через приложение администратора и вижу точные данные.

Затем я делаю insert из приложения admin, и я вижу новую строку.
Теперь я обращаюсь к клиенту, и он показывает старые данные, я имею в виду базу данных без новой строки. Даже если я "обновляю" поле в администраторе, я не увижу это "обновление" с клиентским приложением.

Это вставка:

INSERT
INTO sae_scenario_type
(
id,
name,
description,
locked
)
VALUES
(
SEQ_SAE_SCENARIO_TYPE.nextVAL,
'Direct_SQL_Insertion_1',
'Direct SQL Insertion from RfoAdmin 1',
'N'
)

Я прочитал документы, но я не могу найти что-то, где можно иметь две версии одной таблицы или что-то в этом роде. Я привык к PostgreSQL и MySQL, но не к Oracle. Теперь мне нужно вставлять строки непосредственно в базу данных в обход клиентского приложения, и я могу с помощью приложения admin, но я не вижу их в клиентском приложении.

Я уверен, что это связано с конфигурацией Oracle или что-то в этом роде, но сейчас у меня нет доступа к этому. Я просто пытаюсь подготовиться к проекту, который мы начнем через несколько недель. Тогда у меня будет доступ к людям, управляющим базой данных (надеюсь, так).

Есть идеи?

спросил(а) 2015-05-28T13:28:00+03:00 5 лет, 4 месяца назад
1
Решение
57

Теперь я обращаюсь к клиенту, и он показывает старые данные, я имею в виду базу данных без новой строки. Даже если я "обновляю" поле в администраторе, я не увижу это "обновление" с клиентским приложением.

Единственное, что может вызвать это, - это не COMMIT.

После изменения DML вы должны зафиксировать, чтобы изменения были постоянными.

INSERT
INTO sae_scenario_type
(
id,
name,
description,
locked
)
VALUES
(
SEQ_SAE_SCENARIO_TYPE.nextVAL,
'Direct_SQL_Insertion_1',
'Direct SQL Insertion from RfoAdmin 1',
'N'
);

COMMIT; --> you are missing this

Из документации,

COMMIT

Цель

Используйте инструкцию COMMIT для завершения текущей транзакции и внесения постоянных изменений в транзакцию. Транзакция представляет собой последовательность операторов SQL, которые Oracle Database рассматривает как единое целое. Этот оператор также удаляет все точки сохранения транзакции и освобождает блокировки транзакций.

ответил(а) 2015-05-28T13:38:00+03:00 5 лет, 4 месяца назад
57

Да, вам просто нужна фиксация; также вы можете проверить опцию на auto commit;

ответил(а) 2015-05-28T13:58:00+03:00 5 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема