我正在使用数据库实用程序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;
现在还可以正确返回插入的记录。这是执行查询中的错误吗?我做错什么了吗?我能试着解决这个问题吗?
注:请编辑我的帖子以包含图片,因为我没有添加图片的声誉。
最佳答案
听起来,数据检查器运行在与您所做工作不同的数据库会话中。ddl语句(如create table
)执行隐式提交,因此新表将立即显示在所有位置。dml语句(如insert
)不可用(通常,默认情况下,尽管某些客户端将基于设置),因此新插入的数据在任何其他会话中都不可见。
简而言之…在与commit
相同的会话中发出insert
以使其可见。
断开和重新连接也是隐式提交的,这就是为什么在完成此操作后数据是可见的。
关于sql - 执行查询不更新记录/数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12761625/