2

我正在使用数据库实用程序执行查询来试验 Oracle SQL (10g)。

我的问题是,即使成功执行 aCREATE TABLE和 an INSERT,打开数据检查器时也不会显示记录。

这是我运行的:

DROP TABLE Customer;

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

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


该表正确列出:

在此处输入图像描述

截图 1

但是,数据选项卡中没有列出任何记录: 在此处输入图像描述 屏幕截图 2

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

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

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

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

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

4

1 回答 1

2

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

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

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

于 2012-10-06T16:53:19.230 回答