2017-02-15 6 views
0

Я дал команду CREATE TABLE и ВСТАВИТЬ значения в таблицу, но ее не удалось сохранить. В следующий раз, когда я вхожу в систему, а таблица есть, но вставленных данных нет. «Нет выбранных строк» ​​- это оператор, показанный на экране. , пожалуйста, сохраните изменения в ORACLE 11g.Как сохранить таблицу, когда она создана в Oracle 11g?

+3

Вы, вероятно, забыли «зафиксировать» свои вставки –

+0

Вы должны прочитать https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4010.htm – XING

ответ

0

Решение

Сначала установить Oracle клиент базы данных приложения всегда неявно совершать или отката сделки до завершения (поведение recommended от Oracle). Затем узнайте о базе данных transactions и либо установите свое клиентское приложение Oracle Database в режиме автообнаружения, либо явно передайте свой D.M.L. транзакций (с инструкцией COMMIT), поскольку вы не должны полагаться на поведение фиксации клиентского приложения.

Сводка по операциям базы данных

транзакций базы данных является фундаментальным понятием систем управления базами данных. Существенное свойство сделки является ее атомарностью: транзакция либо

  • совершил (изменения в базе данных все сделаны постоянные, который хранятся на диске); или
  • откат (все изменения базы данных отбрасываются).

Лексически транзакция состоит из одной или нескольких S.Q.L. высказывания такого рода:

  • языка определения данных (D.D.L.) заявления (CREATE, DROP, ALTER, GRANT, REVOKE, ...), которые изменяют структуру базы данных;
  • язык манипулирования данных (D.M.L.) заявление (INSERT, DELETE, UPDATE, SELECT, ...), извлекающая или изменить содержимого баз данных.

клиентских баз данных приложение может работать в двух различных режимах:

  • режим автоматического, где неявные операции неявно начатых до D.D.L. и D.M.L. заявления и неявно зафиксированные успехи и откатываются после неудачи после D.D.L. и D.M.L. операторы и явные транзакции явно начинаются в BEGIN отчетах и ​​явно передаются в отчетах COMMIT и отсканированы в ROLLBACK заявлениях;
  • неавтоматический режим, где смешанные транзакции неявно запускаются до D.D.L. или D.M.L. и явно зафиксированы в отчетах COMMIT и отсканированы в ROLLBACK заявлениях.

В обоих режимах транзакции неявно совершаются до того, как клиентское приложение базы данных завершится нормально и неявно откатется до того, как клиент базы данных завершится ненормально. Для систем управления базами данных, которые не поддерживают откатывание D.D.L. (Maria D.B., Oracle Database, S.Q.L. Server), транзакции также неявно совершаются после D.D.L. заявления.

Объяснение

Когда вы выдавшая CREATE заявления, так как это D.D.L. и Oracle Database не поддерживают откатывание D.D.L. операторы, транзакция, которая создает таблицу, была неявно зафиксирована. Вот почему структура таблиц все еще была там, когда вы начали новый сеанс. Но когда вы выпустили заявление INSERT, так как это D.M.L. и вы не находитесь в режиме autocommit, транзакция, которая заполняет таблицу, была , а не, неявно зафиксированной. И поскольку ваше клиентское приложение Oracle Database не было установлено для принудительного совершения транзакций до завершения, именно поэтому содержимое таблицы прошло после того, как вы начали новый сеанс.