我正在使用数据库实用程序Execute Query来试验Oracle SQL(10g)。
我的问题是,即使在成功执行CREATE TABLE
和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
但是,数据选项卡中未列出任何记录: Screenshot 2
SELECT * FROM Customer;
可以成功执行,但不会返回任何内容。
如果我从数据库断开连接并再次连接,则数据会正确加载。
SELECT * FROM Customer;
现在也正确返回插入的记录。
这是执行查询中的错误吗?难道我做错了什么?我可以尝试解决这个问题吗?
PS:请编辑我的帖子以包含图片,因为我没有添加图片的声誉。
答案 0 :(得分:2)
听起来数据检查器正在与您正在进行工作的不同数据库会话中运行。 DDL语句(如create table
)执行隐式提交,因此新表将立即可见。 DML语句(如insert
)没有(通常默认情况下,虽然某些客户端将基于设置),因此新插入的数据在任何其他会话中都不可见。
简而言之......在与commit
相同的会话中发出insert
,以使其可见。
断开连接和重新连接也是隐式提交,这就是为什么数据在您完成后可见。