执行查询不更新记录/数据

时间:2012-10-06 16:36:19

标签: sql database oracle database-connection executequery

我正在使用数据库实用程序Execute Query来试验Oracle SQL(10g)。

我的问题是,即使在成功执行CREATE TABLEINSERT之后,打开数据检查器时也不会显示记录。

以下是我的观点:

DROP TABLE Customer;

CREATE TABLE Customer (
    CustomerNr INTEGER PRIMARY KEY,
    LastName    VARCHAR2(50),
    FirstName   VARCHAR2(50)
);

INSERT INTO Customer VALUES (1, 'Example', 'Joe');


表格列出正确:

enter image description here

截屏1

但是,数据选项卡中未列出任何记录: enter image description here Screenshot 2

SELECT * FROM Customer;可以成功执行,但不会返回任何内容。

如果我从数据库断开连接并再次连接,则数据会正确加载。

SELECT * FROM Customer;现在也正确返回插入的记录。

这是执行查询中的错误吗?难道我做错了什么?我可以尝试解决这个问题吗?

PS:请编辑我的帖子以包含图片,因为我没有添加图片的声誉。

1 个答案:

答案 0 :(得分:2)

听起来数据检查器正在与您正在进行工作的不同数据库会话中运行。 DDL语句(如create table)执行隐式提交,因此新表将立即可见。 DML语句(如insert)没有(通常默认情况下,虽然某些客户端将基于设置),因此新插入的数据在任何其他会话中都不可见。

简而言之......在与commit相同的会话中发出insert,以使其可见。

断开连接和重新连接也是隐式提交,这就是为什么数据在您完成后可见。