【问题标题】:Why Oracle has a table showing different data with the same database?为什么 Oracle 有一个表显示同一个数据库的不同数据?
【发布时间】:2015-05-28 10:28:53
【问题描述】:

我在使用 Oracle 时遇到问题。我有一个数据库或架构和两个应用程序来管理一些数据:管理应用程序和客户端应用程序。
我通过客户端应用程序访问数据,它显示行和字段。

我通过管理应用程序访问数据并且可以看到完全相同的数据。

然后我从管理应用程序中创建一个insert,我可以看到新行。
现在,我使用客户端访问它并显示旧数据,我的意思是没有新行的数据库。 即使我在管理员中“更新”了一个字段,我也不会在客户端应用中看到该“更新”。

这是插入:

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。现在我必须绕过客户端应用程序直接将行插入数据库,我可以使用管理应用程序,但我无法在客户端应用程序中看到它们。

我很确定这与 Oracle 配置或类似的东西有关,但现在我无权访问它。我只是想为几周后开始的一个项目做准备。然后我将可以访问管理数据库的人员(我希望如此)。

有什么想法吗?

【问题讨论】:

  • 您在插入后提交了吗?
  • 谢谢!是的,你是对的。我只是远离疯狂的承诺。
  • 啊!感谢 Lalit Kumar 的版本。

标签: database oracle


【解决方案1】:

现在,我通过客户端访问,它显示旧数据,我的意思是没有新行的数据库。即使我在管理员中“更新”了一个字段,我也不会在客户端应用中看到该“更新”。

唯一可能导致这种情况的是,如果您不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

来自documentation

提交

目的

使用 COMMIT 语句结束当前事务并进行 永久在事务中执行的所有更改。一笔交易是一个 Oracle 数据库将其视为单个 SQL 语句的序列 单元。该语句还会清除事务中的所有保存点,并且 释放事务锁。

【讨论】:

    【解决方案2】:

    是的,你只需要一个提交;您也可以检查自动提交选项;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多